find:遍历查找,返回第一个满足条件的元素
let re = [6, 2, 7, 4, 5, 9].find( function (item, index, o) {
console.log( item, index, o );
return item > 6;
} );
输出:7
findIndex:遍历查找,返回第一个满足条件的元素的索引值
let re2 = [6, 2, 7, 4, 5, 9].findIndex(function (item, index) {
return item > 6
})
console.log(re2)
输出:2
some:遍历查找,如果有满足条件有一个就会返回true,否则就是false
let re3 = [6, 2, 7, 4, 5, 9].some(function (item, index) {
return item > 6
})
console.log(re3)
输出:true
every:遍历查找,每个元素都满足条件则返回true,否则就是false
let re4 = [6, 2, 7, 4, 5, 9].every(function (item, index) {
return item > 6
})
console.log(re4)
输出:false
filter:遍历筛选,筛选出满足条件的元素返回新的数组
let re5 = [6, 2, 7, 4, 5, 9].filter(function (item, index) {
return item > 6
})
console.log(re5)
输出:数组[7, 9]
map:遍历数组,让每个元素执行一边回调函数把所有结果放到新数组返回
let re6 = [6, 2, 7, 4, 5, 9].map(function (item, index) {
return item * item
})
console.log(re6)
输出:数组[36, 4, 49, 16, 25, 81]
push()方法: 向数组末尾添加一个值
let ary = [1, 2, 3, 4]
ary.push('abc', 'bcd')
console.log(ary)
输出:数组[1, 2, 3, 4, "abc", "bcd"]
unshift(): 向数组开始位置添加值
let ary = [1, 2, 3, 4]
ary.unshift('abc', 'bcd')
console.log(ary)
输出:数组["abc", "bcd", 1, 2, 3, 4]
pop(): 从数组中删除一个值,从末尾删除
let ary = [1, 2, 3, 4]
let res = ary.pop()
console.log(ary)
console.log(res)
输出:数组[1, 2, 3] 和 4
shift(): 从数组中删除一个值,从开始删除
let ary = [1, 2, 3, 4]
let res = ary.shift()
console.log(ary)
console.log(res)
输出:数组[2, 3, 4] 和 1
splice()方法
splice(index, count): 可以从指定位置处删除值
index表示从数组中哪个位置删除,表示的就是一个索引号
count表示要删除多少个
let ary = [1, 2, 3, 4, 5, 6, 7, 8]
let res = ary.splice(0, 1)
console.log(res)
ary.splice(ary.length - 1, 1)
ary.splice(2, 1)
console.log(ary)
输出: 数组 [1] 和 数组 [2, 3, 5, 6, 7]
sort() :方法用于对数组的元素进行排序
其中有两个参数 这里用a,b代替
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
若默认不带参数则按照字母的顺序进行排序,
若数组中是数字 则会按照数字的位数依次从0到9排序 如:
let arr = [8,16,50,6,100,1]
console.log(arr.sort())
输出结果为:1,100,16,50,6,8
若想让其按照数字大小进行排序,则还需使用一个排序函数
let arr = [8,16,50,6,100,1]
console.log(arr.sort(sortNumber))
输出结果为:1,6,8,16,50,100
数组随机打乱排序
let arr = ['张三丰', '乔峰', '令狐冲', '张无忌', '贾宝玉', '张飞'];
console.log( arr.sort(function () { return 0.5 - Math.random() }) );
reduce()方法
reduce方法有两个参数,第一个参数是操作数组项的函数;第二个参数则是传入的初始值,reduce最常用的方法是叠加
它会从后面给定的值开始遍历叠加,知道加完所有的项为止
var items = [10, 120, 1000];
// sumSoFar第一次初始值是1,item第一次初始值是数组的第一个元素即10;
var total = items.reduce(function add(sumSoFar, item) {
// 1 + 10 = 11
// 11 + 120 = 131
// 131 + 1000 = 1131
console.log(sumSoFar, item);
return sumSoFar + item; // 这个值会变成下一次的sumSoFar
}, 1);
console.log(total); // 1131
数组之间做减法
<script>
let arr1 = [
{ id: 0, name: 'a' },
{ id: 1, name: 'b' },
{ id: 2, name: 'c' }
]
let arr2 = [{ id: 1, name: 'b' }]
// 对arr1中的元素进行循环:
// 如果当前元素在arr2没有出现过,则留下来;
// 如果当前元素在arr2有出现过,则放弃掉
// 本质上,对arr1进行筛选:留下在arr2中没有出现过的元素
let array = arr1.filter((item1) => {
// console.log(item1)
// 如果arr1在arr2没有出现过,则保留
return arr2.findIndex((item2) => item1.id === item2.id) === -1
})
// arr1-arr2 = ?
console.log(array)
</script>
还可以使用some方法简写为一行代码
let arr1 = [
{ id: 0, name: 'a' },
{ id: 1, name: 'b' },
{ id: 2, name: 'c' }
]
let arr2 = [{ id: 1, name: 'b' }]
return this.arr1.filter((item) => !this.arr2.some(index => index.id === item.id))
输出:
[{ id: 0, name: 'a' }, { id: 2, name: 'c' }]