记录一些JavaScript工作中的常见数组操作语法,方便查阅
一组数据的集合,其表现形式就是内存中的一段连续的内存地址,数组名称其实就是连续内存地址的首地址
可以存储任何数据类型的数据,定义时可以无需指定数组长度,定义时无需指定数据类型
var arr=[值1,值2,值3]; //隐式创建
var arr=new Array(值1,值2,值3); //直接实例化
var array=new Array(size); //创建数组并指定长度
arr.length
for (let i = 0; i < arr.length; i++) {
console.log(arr[i])
}
arr.forEach(function (item, index, array) {
console.log(item, index)
})
注意事项:forEach 的代码块中不能使用 break、continue,它会抛出异常
let res = arr.map(function (item, index, array) {
return item + 1
})
for (let index in arr) {
console.log(arr[index]);
}
for (let val of [1, 2, 3]) {
console.log(val);
}
of后面是iterable既不是for循环规定的array,也不是for…in规定的object,而是iterable。也即是for…of 遍历的是一切可遍历的元素(数组、对象、集合)等。
let res = arr.filter(function (item, index, array) {
return item == 2
})
//some():返回Boolean,检测数组中的元素是否满足指定条件(ES5)
let res = arr.some(function (item, index, array) {
return item == 4
})
//every():返回Boolean,判断每个元素是否符合function条件(ES5)
let res = arr.every(function (item, index, array) {
return item == 2
})
//reduce():接收一个函数作为累加器(ES5)
//累加
let sum = arr.reduce(function (prev, cur, index, array) {
return prev + cur
}, 0)
//取最大
let max = arr.reduce(function (prev, cur, index, array) {
return Math.max(prev, cur)
})
//去重
let res = arr.reduce(function (prev, cur, index, array) {
prev.indexOf(cur) == -1 && prev.push(cur)
return prev
}, [])
//Array.from() 方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例(ES6)
console.log(Array.from([1, 2, 3], x => x + x));// Array [2, 4, 6]
//Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型
Array.of(1, 2, 3); // [1, 2, 3]
//find()方法返回数组中满足提供的测试函数的第一个元素的值,否则返回 undefined。(ES6)
let found = array.find(function(item) {
return item > 10;
});
//findIndex()方法返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1(ES6)
//其实这个和 find() 是成对的,不同的是它返回的是索引而不是值
let found = array.findIndex(function(item) {
return item > 10;
});
arr = arr.concat(arr2)
arr.push.apply(arr, arr2)
arr = [...arr, ...arr2]/arr.push(...arr2)(ES6)