We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
创建数组的两种基本方法:
var colors = new Array(); //添加length属性值 var colors = new Array(20); //向Array构造函数传递数组中应该包含的值 var colors = new Array("red","blue","green"); //使用Array构造函数可以省略new操作符 var colors = Array("red","blue","green");
数组字面量由一对包含数组项的方括号表示,多个数组项之间使用,隔开。
,
var colors = ["red","blue","green"];
读取和设置数组的值:
首先使用[]并提供相应值的从0开始的索引,然后进行读取和设置:
[]
var colors = ["red", "blue", "green"]; //读取数组 console.log(colors[0]); console.log(colors[2]); // 修改数组 colors[1] = "black"; console.log(colors[1]); // 新增数组项目 colors[3] = "brown"; console.log(colors); // 读取数组长度 console.log(colors.length); // 将数组长度值设置为小于实际长度,会移除后面的数组项,然后访问时返回undefined colors.length = 3; console.log(colors[3]); // 使用length属性在数组末尾添加新项:数组最后一项的索引值始终为length-1 colors[colors.length] = "yellow"; console.log(colors);
Array.isArray()方法:
Array.isArray()
var colors = ["red", "blue", "green"]; Array.isArray(colors); // true
栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最先添加的项最早被移除。
栈中项的插入————入栈;
栈中项的移除————出栈。
以上两种行为都只发生在栈的顶部。
push()方法可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度。
push()
pop()方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
pop()
var color = Array(); // push()方法 var count = color.push("red","blue","green"); // 返回数组的长度 console.log(count); count = color.push("black"); console.log(color); console.log(color.length); // pop()方法 var item = color.pop(); // 返回移除的项 console.log(item); console.log(color); console.log(color.length);
队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。
队列在列表的末端添加项,从列表的前端移除。
shift()方法能够移除数组中的第一项并返回该项,同时将数组的length-1。
shift()
结合使用shift()和push()方法即可像队列一样使用数组。
可以使用unshift()(在数组前端添加任意个项并返回数组的长度)和pop()方法来从相反的方向模拟队列。也就是在数组的前端添加项,从数组的末端移除项。
unshift()
reverse()
var values = [1,2,3,4,5]; values.reverse(); console.log(values);
sort()
在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串:
var values = [0,1,5,10,15]; values.sort(); console.log(values); //0,1,10,15,5
因此,sort()方法可以接收一个比较函数作为参数。
function compare(value1, value2) { if (value1 < value2) { return -1; } else if (value1 > value2) { return 1; } else { return 0; } } var values = [0, 1, 3, 7, 9, 15]; values.sort(compare); console.log(values); //0,1,3,7,9,15
也可通过比较函数产生降序排序,只需交换函数返回值即可:
function compare(value1, value2) { if (value1 < value2) { return 1; } else if (value1 > value2) { return -1; } else { return 0; } } var values = [0, 1, 3, 7, 9, 15]; values.sort(compare); console.log(values); //15,9,7,3,1,0
sort()函数的排序条件是:
对于数值类型或者valueOf()方法会返回数值类型的对象类型。 可使用一个更简单的比较函数。此函数只要第二个值减第一个值即可。
function compare (value1,value2){ return value2 - value1; }
arrayObject.slice(start,end)
end
.forEach(element, index, array)
什么是回调函数
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。 作者:常溪玲 链接:https://www.zhihu.com/question/19801131/answer/13005983 来源:知乎
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
作者:常溪玲 链接:https://www.zhihu.com/question/19801131/answer/13005983 来源:知乎
遍历数组,参数为一个回调函数,回调函数有三个参数:
var a = [1,2,3,4]; a.forEach(console.log); /* 1 0 [ 1, 2, 3, 4 ] 2 1 [ 1, 2, 3, 4 ] 3 2 [ 1, 2, 3, 4 ] 4 3 [ 1, 2, 3, 4 ] 第1个是遍历的数组内容;第2个是对应的数组索引,第3个是数组本身。 */
var a = [1, 2, 3, 4, 5, 6]; a.forEach(function(e, i, array) { array[i] = e + 1; }); console.log(a); // [2, 3, 4, 5, 6, 7]
.map(function(element))
与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变。
// 数值项求平方 var data = [1, 2, 3, 4]; var arrayOfSquares = data.map(function(item) { return item * item; }); console.log(arrayOfSquares); // [ 1, 4, 9, 16 ]
.filter(function(element))
返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。
新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。
// 写一个函数,操作数组,返回一个新数组,新数组中只包含正数,原数组不变 function filterPositive(arr) { return arr.filter(function(value) { return value > 0; }); } var arr = [0,3, -1, 2, '饥人谷', true]; var newArr = filterPositive(arr); console.log(newArr); // [ 3, 2, true ] console.log(arr); // [ 0, 3, -1, 2, '饥人谷', true ]
在上面例子中,数组中的值0也被过滤。
filter()方法中的逻辑判断为==true/false
filter()
==true/false
.every(function(element, index, array))
.some(function(element, index, array))
这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值
在空数组上调用every返回true,some返回false
var number = [1, 2, 3, 4, 5]; var everyResults = number.every(function(item, index, array) { return (item > 3); }); console.log(everyResults); // false // var someResults = number.some(function(item, index, array) { return (item > 3); }); console.log(someResults); // true
.reduce(function(prev, cur, index, array)
.reduceRight(function(prev, cur, index, array)
遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向,方法有两个参数
回调函数:把两个值合为一个,返回结果
函数的4个参数分别为:
var arr = [1, 2, 3, 4, 5]; var reduceSum = arr.reduce(function(prev, cur, index, array) { return prev + cur; }); console.log(reduceSum); // 15
.indexOf(element)
.lastIndexOf(element)
用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。
var a = [1, 2, 3, 3, 2, 1]; console.log(a.indexOf(2)); // 1 console.log(a.lastIndexOf(4)); // -1
小练习:
在数组的栈方法中:
在数组的队列方法中:
join()方法使用分隔符将数组转换为字符串。
join()
splice()有3种使用方式,最终返回删除的项:
splice()
var colors = ['red', 'green', 'blue']; // 使用push方法在最后面添加1项 var count = colors.push('black'); console.log(colors); // [ 'red', 'green', 'blue', 'black' ] // 使用splice方法在最后面添加1项 var count = colors.splice(colors.length, 0, 'white'); console.log(colors); // [ 'red', 'green', 'blue', 'black', 'white' ] // 使用pop方法移除最后1项 var count = colors.pop(); console.log(colors); // [ 'red', 'green', 'blue', 'black' ] // 使用splice方法移除最后1项 var count = colors.splice(colors.length - 1, 1); console.log(colors); // [ 'red', 'green', 'blue' ] // 使用shift方法移除第1项 var count = colors.shift(); console.log(colors); // [ 'green', 'blue' ] // 使用splice方法移除第1项 var count = colors.splice(0, 1); console.log(colors); // [ 'blue' ] // 使用unshift方法在最前面添加1项 var count = colors.unshift('blue'); console.log(colors); // [ 'blue', 'blue' ] // 使用splice方法在最前面添加1项 var count = colors.splice(0, 0, 'red'); console.log(colors); // [ 'red', 'blue', 'blue' ]
function arrayOfSquares(arr) { for (var i = 0; i < arr.length; i++) { arr[i] = Math.pow(arr[i], 2); } return arr; } var data = [1, 2, 3, 4]; console.log(arrayOfSquares(data)); // [ 1, 4, 9, 16 ] console.log(data); // [ 1, 4, 9, 16 ]
function filterPositive(arr) { return arr.filter(function(value) { return value > 0; }); } var arr = [0,3, -1, 2, '你好', true]; var newArr = filterPositive(arr); console.log(newArr); // [ 3, 2, true ] console.log(arr); // [ 0, 3, -1, 2, '你好', true ]
The text was updated successfully, but these errors were encountered:
No branches or pull requests
创建数组的两种基本方法:
数组字面量由一对包含数组项的方括号表示,多个数组项之间使用
,
隔开。读取和设置数组的值:
首先使用
[]
并提供相应值的从0开始的索引,然后进行读取和设置:检测数组
Array.isArray()
方法:栈方法
栈是一种LIFO(Last-In-First-Out,后进先出)的数据结构,也就是最先添加的项最早被移除。
栈中项的插入————入栈;
栈中项的移除————出栈。
以上两种行为都只发生在栈的顶部。
push()
方法可以接收任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后数组的长度。pop()
方法从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。队列方法
队列数据结构的访问规则是FIFO(First-In-First-Out,先进先出)。
队列在列表的末端添加项,从列表的前端移除。
shift()
方法能够移除数组中的第一项并返回该项,同时将数组的length-1。结合使用
shift()
和push()
方法即可像队列一样使用数组。可以使用
unshift()
(在数组前端添加任意个项并返回数组的长度)和pop()
方法来从相反的方向模拟队列。也就是在数组的前端添加项,从数组的末端移除项。重排序方法
reverse()
方法:反转数组项的顺序。sort()
方法在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序。即使数组中的每一项都是数值,sort()方法比较的也是字符串:
因此,
sort()
方法可以接收一个比较函数作为参数。也可通过比较函数产生降序排序,只需交换函数返回值即可:
sort()
函数的排序条件是:对于数值类型或者valueOf()方法会返回数值类型的对象类型。
可使用一个更简单的比较函数。此函数只要第二个值减第一个值即可。
Array 对象方法
arrayObject.slice(start,end)
,不包含end
元素ES5 数组拓展
.forEach(element, index, array)
什么是回调函数
遍历数组,参数为一个回调函数,回调函数有三个参数:
.map(function(element))
与forEach类似,遍历数组,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变。
.filter(function(element))
返回数组的一个子集,回调函数用于逻辑判断是否返回,返回true则把当前元素加入到返回数组中,false则不加。
新数组只包含返回true的值,索引缺失的不包括,原数组保持不变。
在上面例子中,数组中的值0也被过滤。
filter()
方法中的逻辑判断为==true/false
.every(function(element, index, array))
.some(function(element, index, array))
这两个函数类似于离散数学中的逻辑判定,回调函数返回一个布尔值
在空数组上调用every返回true,some返回false
.reduce(function(prev, cur, index, array)
.reduceRight(function(prev, cur, index, array)
遍历数组,调用回调函数,将数组元素组合成一个值,reduce从索引最小值开始,reduceRight反向,方法有两个参数
回调函数:把两个值合为一个,返回结果
函数的4个参数分别为:
.indexOf(element)
.lastIndexOf(element)
用于查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1,indexOf从头至尾搜索,lastIndexOf反向搜索。
小练习:
在数组的栈方法中:
push()
方法可以接受任意数量参数,并把所有参数添加到数组末尾,返回修改后数组长度;pop()
方法从数组末尾移除最后一项,数组长度减1,返回移除的项。在数组的队列方法中:
shift()
方法移除数组中的第一项,数组长度减1,并返回移除的项。unshift()
方法在数组最前面添加任意个项,并返回新数组长度。join()
方法使用分隔符将数组转换为字符串。splice()
有3种使用方式,最终返回删除的项:The text was updated successfully, but these errors were encountered: