JavaScript数组大全
1、数组转换方式( join()、valueOf()、toString()、toLocaleString())
-
join() 可以将数组转换成字符串,并以逗号隔开–》使用join方法若是数组中含有:空、null、undefined则会打印出空数组出来
var lists = [1, null, 3, undefined, 5, , 3, , 1] console.log(lists.join()); // 当数组中含有null,undefined,或者空字符串的时候,在使用join方法转换成字符串的时候会直接输出空对象
-
valueOf() 返回数组对象的原始值。
var lists = [1, null, 3, undefined, 5, , 3, , 1] console.log(lists.valueOf()); //使用valueOf会-->null返回null,undefined返回undefined,空的地方返回empty
-
toString() 把数组转换为字符串,并返回结果,以逗号隔开。和join方法差不多,区别在于join可以自定义分隔符,而toString不行,只能用逗号
var lists = [1, null, 3, undefined, 5, , 3, , 1] console.log(lists.toString());
-
toLocaleString()把数组转换为字符串,并返回结果。这个呢又和上面几个差不多,但是区别在于每三位会自定义用逗号隔开,时间上也会有所不同
var lists = 1234567
var date = new Date()
console.log(lists.toString());
console.log(lists.toLocaleString());
console.log(date.toString());
console.log(date.toLocaleString());
栈和队列的方法(push()、pop()、shift()、unshift)
-
push()向数组的末尾添加一个或多个元素(会修改原数组的长度)
var list = [1, 2, 3] list.push(4) console.log(list);
-
pop()删除数组的最后的一个元素(会修改原数组的长度)
var list = [1, 2, 3] list.pop() console.log(list);
-
shift() 删除数组的第一个元素并返回删除的元素。(会修改原数组的长度)
var list = [1, 2, 3] list.shift() console.log(list);
-
unshift()向数组的开头添加一个或更多元素。(会修改原数组的长度)
var list = [1, 2, 3]
list.unshift(4)
console.log(list);
重新排序数组的方法(sort()、reverse())
-
sort()对数组的元素进行排序,默认是按升序排列,可通过比较函数做参数决定排序规则。同样原数组被修改后返回
var list = [6, 5, 4, 3, 2, 1] list.sort() console.log(list);
-
reverse()反转数组的元素顺序。
var list = [1, 2, 3, 4, 5, 6]
list.reverse()
console.log(list);
操作方法(concat()、slice()、splice())
-
concat()连接两个或更多的数组,并返回结果。concat()方法不会修改原数组,而是先创建当前数组的副本,在副本上进行连接,而原数组在操作前后并不会发生变化
var history1 = ["赵高", "嫪毐", "吕不韦"]; var history2 = history1.concat("秦皇", ["胡亥", "扶苏"]); console.log(history1); console.log(history2);
-
slice()选取数组的的一部分,并返回一个新数组。slice()方法不会修改原数组,而是基于原数组中的项创建新数组返回
var list = [6, 5, 4, 3, 2, 1]
var list2 = list.slice(2, 4)//从第二个开始索引,到第四个结束list2=[4,3]
console.log(list2);
- splice()实现数组项的删除、插入、替换。原数组会按照相应操作改变,如果没有删除任何项,则返回一个空数组
var list = [6, 5, 4, 3, 2, 1]
list.splice(3, 2)
console.log(list);
位置方法(indexOf()、lastindexOf())
-
indexOf()搜索数组中的元素,并返回它所在的索引位置
var list = [6, 5, 4, 3, 2, 1] console.log(list.indexOf(2));//从前开始数第几个为3,返回它的index
-
lastindexOf()返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。但是index值不变,也就是说返回的值和indexof一样
var list = [6, 5, 4, 3, 2, 1]
console.log(list.lastIndexOf(2));//从后开始数第几个为3,返回它的index
迭代方法(every()、some()、filter()、forEach()、map())
-
every()检测数值元素的每个元素是否都符合条件。如果该函数对每一项都返回true,才返回true。
var checknum = [15, 3, 2, 6, 7, 1, 9, 10]; var checkresult = checknum.every(function (item, index, array) { return item >= 1; }); console.log(checkresult);
-
some()检测数组元素中是否有元素符合指定条件。如果该函数有一项返回true,则返回true。
var checknum = [15, 3, 2, 6, 7, 1, 9, 10]; var checkresult = checknum.some(function (item, index, array) { return item >= 10; }); console.log(checkresult);
-
filter()检测数值元素,并返回符合条件所有元素的数组。
var arr = ['1', '2', undefined, '3.jpg', undefined] var newArr = arr.filter(item => item) console.log(newArr) var arr = ['1', '2', null, '3.jpg', null] var newArr = arr.filter(item => item) console.log(newArr) //空字符串里面不能包含空格 var arr = ['1', '2', '', '3.jpg', ''] var newArr = arr.filter(item => item) console.log(newArr)
-
forEach()对数组中的每一项运行给定函数
var arr = [0, 2, 4, 6, 8]; var sum = 0; var str = arr.forEach(function (item, index, arr) { sum += item; console.log("sum的值为:", sum); //0 2 6 12 20 })
-
map()通过指定函数处理数组的每个元素,并返回处理后的数组。
var arr = [0, 2, 4, 6, 8]; var str = arr.map(function (item, index, arr) { console.log(this); console.log("原数组arr:", arr); //注意这里执行5次 return item / 2; }, this); console.log(str);