目录
1、添加元素方法
1.1、push()
var arr = [1, 2, 3, 4, 5];
console.log(arr);
// 在数组的末尾添加元素
var l = arr.push(9);
console.log(l); //返回的是数组的长度
console.log(arr);
代码结果:
1.2、unshift ()
var arr = [1, 2, 3, 4, 5];
console.log(arr);
// 在数组的开头添加元素
var l = arr.unshift(7);
console.log(l); //返回的是数组的长度
console.log(arr);
运行结果:
注意:
(1)push()和unshift()方法执行后都会影响原来的数组;
(2)push()和unshift()方法都可以添加多个元素;
(3)push()和unshift()方法都可以添加数组到当前数组中
var arr = [1, 2, 3, 4, 5];
// 1、原数组改变
console.log(arr);
// 2、可以在数组中添加多个元素
arr.push(6, 7, 8);
console.log(arr);
arr.unshift(-2, -1, 0);
console.log(arr);
运行结果:
var arr = [1, 2, 3, 4, 5];
//3、可以添加一个数组到当前数组中
var arr1 = [111, 222, 333];
arr.push(11111, arr1);
arr.unshift(2222, arr1);
console.log(arr);
运行结果:
push()和unshift()区别:
(1)push()是在数组的最后添加新元素,而unshift()是在数组的开头添加新元素;
(2)push()添加元素时不存在移动,而unshift()添加元素时存在移动问题,因此unshift()添加元素时的性能低于push()添加元素时的性能。
2、删除元素
2.1、pop()
var arr = [1, 2, 3, 4, 5];
console.log(arr);
//删除数组中的最后一个元素
var el = arr.pop();
console.log(el);
console.log(arr);
运行结果:
2.2、shift()
var arr = [1, 2, 3, 4, 5];
console.log(arr);
//3、shift()可以删除一个数组中的第一个元素
var el = arr.shift();
console.log(el);
console.log(arr);
运行结果:
注意:
(1)pop()和shift()方法执行后都会影响原来的数组。
pop()和shift()区别:
(1)pop()是删除数组最后一个元素,shift()是删除数组第一个元素;
(2)pop()删除元素时不存在移动问题,而shift()删除元素时存在移动问题,因此shift()删除元素时的性能低于pop()删除元素时的性能。
3、数组排序
3.1、reverse ()
var arr = [1, 2, 3, 4, 5];
console.log(arr);
// reverse() 方法用于颠倒数组中的元素。
arr.reverse();
console.log(arr);
运行结果:
注意:reverse() 方法执行后,会修改原来的数组。
3.2、sort()
3.2.1、使用默认排序规则进行排序
var arr = [2, 4, 1, 5, 3];
console.log(arr);
// sort() 方法对整型数组进行排序
arr.sort();
console.log(arr);
运行结果:
(2)对字符数字进行排序
var arr = ['10', '1', '2', '23', '4', '120', '5'];
console.log(arr);
// sort() 方法对字符数字进行排序
arr.sort();
console.log(arr);
运行结果:
(2)对字符串进行排序
var arr = ['ab', 'a', 'abc', 'bc', 'bcd', 'b', 'cde', 'efg'];
console.log(arr);
// sort() 方法对字符串进行排序
arr.sort();
console.log(arr);
运行结果:
3.2.3、使用自定义比较器
var arr = ['10', '1', '2', '23', '4', '120', '5'];
console.log(arr);
/*** 自定义的比较器,它会返回三个值:
* 正整数:升序排列
* 负整数:降序排列
* 零:位置不变 */
function compare(a, b) {
return a - b;
//a-b是升序,b-a是降序
}
arr.sort(compare);
console.log(arr);
运行结果:
注意:
(1)sort()执行后,会修改原来的数组;
(2)sort()对整型数组进行排序,默认是升序。
4、数组转字符串
4.1、toString()
语法格式:数组名称.toString();
var arr = [1, 2, 3, 4, 5];
console.log(arr, typeof arr);
var str = arr.toString();
console.log(str, typeof str);
运行结果:
4.2、join()
var arr = [1, 2, 3, 4, 5];
console.log(arr, typeof arr);
var str = arr.join('-');
console.log(str, typeof str);
运行结果:
注意:toString()和join()方法都不会改变原来的数组。
5、数组索引
5.1、indexof()
var arr = [1, 2, 3, 4, 5, 6, 5];
var p = arr.indexOf(5)
console.log(p); // 4
p = arr.indexOf(9);
console.log(p); // -1
p = arr.indexOf(5, 4);
console.log(p); // 4
p = arr.indexOf(5, 5);
console.log(p); // 6
5.2、lastIndexof()
var arr = [1, 2, 3, 4, 5, 6, 5];
var p = arr.lastIndexOf(5)
console.log(p); // 6
p = arr.lastIndexOf(9);
console.log(p); // -1
p = arr.lastIndexOf(5, 6);
console.log(p); // 6
p = arr.lastIndexOf(5, 5);
console.log(p); // 4
注意:indexof()和lastIndexof()只要找到第一个元素就结束,并返回其下标。
6、其他方法
6.1、concat()
var arr = [1, 2, 3, 4];
var arr1 = [8, 88, 888, 888];
console.log(arr);
var newArr = arr.concat(5, 6, 7, arr1);
console.log(newArr);
运行结果:
注意:concat()执行后不会影响原数组。
6.2、slice()
var arr = [1, 2, 3, 4];
console.log(arr);
var arr2 = arr.slice(1);
console.log(arr2); //2,3,4
var arr3 = arr.slice(1, 3);
console.log(arr3); //2,3
注意:slice()执行后不会影响原数组。
6.3、map()
var arr = [1, 2, 3, 4];
console.log(arr);
// 把数组中每个元素加 1。
var arr4 = arr.map(function(value, index, array) {
console.log(value, index, array);
return value + 1;
})
console.log(arr4);
运行结果:
说明:
(1)map()的参数是一个回调函数,这个函数有三个参数,第一个参数表示原数组的元素,第二个参数是元素对应的下标,第三个参数是原数组对象;
(2)在回调函数中,我们可以根据自己的具体业务逻辑进行操作,操作完后需要使用return语句来返回结果;
(3)map()执行后不会影响原数组,而是产生一个新的数组。
6.4、reduce()
//把数组中所有元素进行累加,并返回结果
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr);
var sum = arr.reduce(function(total, value, index, array) {
console.log(total, value, index, array);
return total + value;
});
console.log(sum);
运行结果:
说明:
(1)reduce()中有一个回调函数,它有4个参数:第一个参数是总数(也就是返回结果参数,这个参数必须指定),第二个参数是当前的元素值(必须指定),第三个参数是元素对应的下标,第四个参数是数组对象本身;
(2)如果total没有显示指定值,那么会将数组中的第一个元素赋给total,然后把数组中的第二个元素赋给value,两者相加后,再把结果赋给total,然后再把第三个元素赋给value,再次相加,以此类推。
(3)每次执行后,需要使用return来返回结果(其实就是把结果赋值给sum变量)。
6.5、some()
var arr = [2, 4, 20, 9, 6, 8]
console.log(arr);
// 遍历数组,判断数组是否包含奇数。
var flag = arr.some(function(value) {
console.log(value);
if (value % 2 === 1) {
return true;
} else {
return false;
}
})
console.log(flag);
代码结果:
说明:
(1)挡执行some()时,如果返回true,则结束这个方法的执行,否则会遍历完数组中的所有元素。
(2)这个方法是只要有一个条件满足就会推出。
例二:检查某些数组值是否大于18
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19];
flag = arr.some(function(val) {
if (val > 18) return true;
else return false;
});
console.log(flag);
</script>
说明:
(1)若数组中没有任何一个元素大于18,则会返回false,若数组中存在一个大于18的元素,则返回true。
6.6、every()
var arr = [2, 4, 20, 9, 6, 8]
console.log(arr);
var flag = arr.every(function(value) {
console.log(value);
if (value % 2 === 0) return true;
else return false;
})
console.log(flag);
运行结果:
说明:
(1)every()执行时,如果返回的值是false,则结束后续的遍历。
(2)every()执行后,不会影响原数组。
6.7、filter()
var arr = [1000, 5000, 20000, 3000, 10000, 800, 1500];
console.log(arr);
// 遍历数组,将数组中工资超过5000的值删除。
var new_arr = arr.filter(function (value) {
console.log(value);
return value >= 5000;
});
console.log(new_arr);
运行结果:
说明:
(1)filter()执行后,会产生一个新的数组,数组中的元素就是符合条件的元素;
(2)filter()的回调函数中,是通过true来删除元素的,如果值为false则不删除元素;
(3)filter()执行后,不会影响原来的数组。
6.8、find()
var arr = [4, 9, 16, 25, 29];
console.log(arr);
// 查找(返回)大于 18 的第一个元素的值。
var r = arr.find(function (value) {
console.log(value);
return value > 18;
})
console.log(r);
运行结果:
说明:
(1)find()是从数组中查询符合条件的元素,找到后返回ture并结束查找,如果没有找到返回false。
(2)这个方法执行后,不会影响原来的数组。
(3)如果找到了则返回这个元素,如果没有找到,则返回undefined。