数据结构与算法基础 第[0]部分
在您深入学习数据结构与算法之前(#mypersonalnotebook),我假设您已具备以下基础知识:
- 条件
- 重复结构(for循环和while循环)
- 函数
- 可变范围
- 递归
- 声明类
都是JavaScript程序员应该知道的基础知识。
笔记:
- 所有输出都将显示在控制台上。
- 数据结构与算法将分解成多个部分。
- 如果您不具备上述基础知识,我建议您购买一本Eloquent Javascript教材。
- 本文使用的所有代码都可以在我的Github仓库中找到。
大批
每种编程语言都包含某种形式的数组。
数组是计算机编程中最常见的数据结构。
JavaScript 中的数组
JavaScript 中的数组是元素的线性集合,其中每个元素都可以通过索引(数字索引)访问。
如何在 Javascript 中创建数组
在 JavaScript 中创建数组最推荐的方法是使用计算成员访问[]运算符声明变量。
var myArray = [];
当你像这样创建一个数组时,你会得到一个长度值为 0 的数组。我们来实际操作一下以确保这一点。
var myArray = [];
console.log(myArray.length)//0
我们还可以使用构造的模式创建一个数组。
var myArray = new Array();
console.log(myArray.length)//0
笔记:
- JavaScript 中的数组是任何类型元素(函数、对象、基本类型等)的集合。
- 计数从索引 0 开始,而不是 1。
访问数组元素
可以使用[]运算符访问数组元素。
var names = ["Somto", "Ezeh",];
console.log(names[0] + ' ' names[1])// Somto Ezeh
写入数组元素
将数据赋值给数组时,我们使用[]
var numbers = [];
for(var i= 0; i < 10; i++){
numbers[i] = i+1;
}
console.log(numbers)//1,2,3,4,5,6,7,8,9,10
从字符串生成数组
对字符串调用split()函数会将该字符串拆分成多个部分,并根据每个部分生成一个数组。
var string = "I Love javascript ";
var makeArray = string.split(' ');
console.log(makeArray);//["I","Love","javascript"]
访问器函数
使用 JavaScript访问器函数,我们可以访问数组中的一个元素并返回一个值。
indexOf()
indexOf 函数遍历数组,查看传递给它的参数是否在目标数组中找到,并返回其位置。
var names = ["John","Samuel","Samuel","Obinna"];
var position = names.indexOf("Samuel");
console.log(position);//1
indexOf ()函数返回与参数匹配的第一个元素的位置,如果未找到则返回 -1。
lastIndexOf()
lastIndexOf 函数遍历数组,查看传递给它的参数是否在目标数组中找到,并返回匹配的最后一个位置,如果找不到则返回 -1。
var names = ["John","Samuel","Samuel","Obinna"];
var position = names.lastIndexOf("Samuel");
console.log(position);//2
toString()和join()返回以逗号分隔的数组的字符串表示形式。
var myArray = ["How to use","Accesor","Functions"];
var makeString = myArray.join()
console.log(makeString);//How to use,Accesor,Functions
要去掉逗号,只需向join()函数传递一个空引号即可。
var myArray = ["How to use","Accesor","Functions"];
var makeString = myArray.join(" ")
console.log(makeString);//How to use Accesor Functions
concat ()和splice()函数可以从现有数组生成一个新数组。concat ()
函数将多个数组合并并生成一个新数组,而splice()函数从目标数组的子集中生成一个新数组。
concat()
var firstArray = ["Princess", "Precious", "Patience", "Pessy"];
var secondArray = ["Adesunloye","Adedeji","Adetoro"];
var joinAll = firstArray.concat(secondArray);
console.log(joinAll);//["Princess", "Precious", "Patience", "Pessy","Adesunloye","Adedeji","Adetoro"]
拼接()
var names = ["Princess", "Precious", "Patience", "Pessy"];
var newArray = names.splice(2,3);
console.log(newArray);//["Patience","Pessy"]
突变函数
流行音乐()
pop ()函数从数组末尾移除一个元素并返回该元素的值。
var numbers = [1,2,3,4,5,6];
var remove = numbers.pop();
console.log(remove);// 6
向数组中添加元素
有两种方法:
push ()和unshift(),但我们先来讨论push()函数。
推()
push ()函数将一个元素添加到数组的末尾。
var array = [1,2,3,4,5,6,7,8];
array.push(9)
console.log(array) // 1,2,3,4,5,6,7,8,9
unshift( )
函数会将一个元素添加到数组的开头。
var array = [2,3,4];
array.unshift(1);
console.log(array)//1234
shift ( )函数从数组的开头移除一个元素并返回移除后的值。
var array = ["I", "LOVE", "ARRAYS"];
var firstElementRemoved = array.shift();
console.log(firstElementRemoved);// I
//You can also decide to discard the return value
var array = ["I", "LOVE", "ARRAYS"];
array.shift();
console.log(array);//["LOVE", "ARRAYS"]
splice( )
函数用于在数组中间添加或删除元素。 要向数组中间添加或删除元素,需要以下参数。
- 起始索引(您希望从哪里开始添加元素)。
- 要移除的元素数量(添加元素时为 0)。
- 你想添加到数组中的元素。
var array = [10,20,30,70,80,90];
var newArray = [40,50,60];
array.splice(3,0,newArray);
console.log(array); //10,20,30,[40,50,60],70,80,90
传递给splice()函数的元素可以是列表,而不一定是数组的集合。
var array = [10,20,30,70,80,90];
array.splice(3,0,40,50,60);
console.log(array); //10,20,30,40,50,60,70,80,90
以下是使用splice()函数从数组中删除元素的示例:
var intro = ["Hello", "Callme", "John", "Samuel"];
var removeintro = intro.splice(1,2);
console.log(removeintro);//Callme,John
reverse()函数
反转数组元素的顺序。
var array = [1,2,3,4,5,6,7,8,9];
var reverseArray = array.reverse();
console.log(reverseArray);//9,8,7,6,5,4,3,2,1
sort ()函数按字典顺序对数组元素进行排序:有关字典顺序的更多信息,请参阅相关文档。
var names = ["Williams","Joe","John","Samuel","Somto","Ezeh"];
names.sort();
console.log(names);// Ezeh,Joe,John,Samuel,Somto,Williams
太好了!一切正常,现在让我们看看排序功能对数字的处理效果如何。
var numbers = [1,2,3,4,50,60,70,80,5,6,7];
numbers.sort();
console.log(numbers);//1,2,3,4,5,50,6,60,7,70,80
糟糕……结果
和我们预期的不一样。别担心,我们可以通过将一个函数传递给sort()函数来解决这个问题。
function compare(num1, num2) {
return num1 - num2;
}
var nums = [1,2,3,4,50,60,70,80,5,6,7];
var sorted = nums.sort(compare);
console.log(sorted)// 1,2,3,4,5,6,7,50,60,70,80
是的!它奏效了。