Array数组方法
不改变数组
Array every()
every()
方法检查数组中的所有元素是否都通过了测试(被作为函数提供)。
every()
方法对数组中存在的每个元素执行一次函数:
- 如果找到函数返回 false 值的数组元素,every() 返回 false(并且不检查剩余值)
- 如果没有出现 false,every() 返回 true
注释:every() 不对没有值的数组元素执行函数。
Array some()
some()
方法检查数组中的任何元素是否通过测试(作为函数提供)。
some()
方法对数组中存在的每个元素执行一次函数:
- 如果找到函数返回真值的数组元素,some() 返回真(并且不检查剩余值)
- 否则返回 false
注释:some() 对没有值的数组元素不执行函数。
Array filter()
filter()---检测数组元素,并返回符合条件所有元素的数组。
Array find()
find()
方法返回数组中第一个通过测试的元素的值(作为函数提供)。
find()
方法对数组中存在的每个元素执行一次函数:
- 如果找到函数返回 true 值的数组元素,则 find() 返回该数组元素的值(区别filter找到后会停止遍历)
- 否则返回 undefined
注释:find() 不对空数组执行该函数。
const = arr1 = [
{ id: 1, rebateRatio: '', value: false },
{ id: 2, rebateRatio: '', value: false }
]
const = arr2 = [
{ id: 1, rebateRatio: '0.3' },
]
const mergedArray = arr1.map(item => {
const foundItem = arr2.find(i => i.id === item.id);
if (foundItem) {
return { ...item, rebateRatio: foundItem.rebateRatio, value: true };
} else {
return item;
}
});
Array indexOf()
indexOf()---搜索数组中的元素,并返回它所在的位置。
Array lastIndexOf()
lastIndexOf()---返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。
Array concat()
concat()---连接两个或更多的数组,并返回结果。【es6用扩展运算符…】
arr.concat(array2, array3, ..., arrayX)
arr.concat([])
同 arr.slice()
本质是 浅拷贝
Array slice()
slice()
方法以新的数组对象,返回数组中被选中的元素。
const arr = [1,2,3,4,5,6,7,8,9]
console.log(arr.slice()) // [1,2,3,4,5,6,7,8,9]
console.log(arr.slice(0)) // [1,2,3,4,5,6,7,8,9]
console.log(arr.slice(0, 3)) // [1,2,3]
console.log(arr.slice(2)) // [3,4,5,6,7,8,9]
console.log(arr.slice(-1)) // [9]
console.log(arr.slice(-3,-1)) // [7,8]
console.log(arr.slice(-1,-3)) // []
arr.slice()
第一层是深拷贝,多层之后就不行了,本质还是 浅拷贝
Array map()
map()---通过指定函数处理数组的每个元素,并返回处理后的数组。
Array join()
join()---把数组的所有元素放入一个字符串。
Array toString()
toString()---把数组转换为字符串,并返回结果。
Array reduce()
reduce()
方法将数组缩减为单个值。
reduce()
方法为数组的每个值(从左到右)执行提供的函数。
函数的返回值存储在累加器中(结果/总计)。
注释:对没有值的数组元素,不执行 reduce() 方法。
reduce(function(total,currentValue,index,arr), initialValue)
const numbers = [15, 2, 1, 4]
function getSum(total, num) {
return total + Math.round(num);
}
numbers.reduce(getSum) // 22
numbers.reduce(getSum, 5) // 27
改变原数组
Array pop()
pop()---删除并返回数组的最后一个元素。
Array push()
push()---向数组的末尾添加一个或更多元素,并返回新的长度。
Array shift()
shift()---删除并返回数组的第一个元素。
Array unshift()
unshift()---向数组的开头添加一个或更多元素,并返回新的长度。
Array reverse()
reverse()---反转数组的元素顺序。
Array sort()
sort()---对数组的元素进行排序。
Array splice()
splice()---用于插入、删除或替换数组的元素。
array.splice(index, howmany, item1, …, itemX)
index: 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany:必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX: 可选。向数组添加的新项目。
const fruits = ["Banana", "Orange", "Apple", "Mango"]
// 在位置 2,添加 2 个元素:
fruits.splice(2, 0, "Lemon", "Kiwi") // Banana,Orange,Lemon,Kiwi,Apple,Mango
var fruits = ["Banana", "Orange", "Apple", "Mango"];
// 在位置 2,添加 2 个元素,删除 1 个元素:
fruits.splice(2, 1, "Lemon", "Kiwi") // Banana,Orange,Lemon,Kiwi,Mango
const fruits = ["Banana", "Orange", "Apple", "Mango", "Kiwi"];
// 在位置 2,删除 2 个项目:
fruits.splice(2, 2) // Banana,Orange,Kiwi