1.筛选需要的数组数据;
this.arr.filter(item => item.channel==3 || item.channel==6)
2.根据某个相同属性值,组合两个数组
a.map(el=>{el.label=b.find(item=>item.channel==el.channel).label})
3.将两个数组组装成对象数组
needArr = joinIds.map((i,index)=>{
return {
id: i,
name: joinNames[index]
}
})
4.求和
let total = data.reduce((t, v) => {
return t + v.value
}, 0)
ES5
var a = [1,2,3];
var b = [1,2,2,4];
//并集(去重)
var union = a.concat(b.filter(function(v) {return a.indexOf(v) === -1 } )); // [1,2,3,4]
//交集
var intersection = a.filter(function(v){ return b.indexOf(v) > -1 }); // [1,2]
//差集
var difference = a.filter(function(v){ return b.indexOf(v) === -1 }); // [3]
ES6
let a = [1,2,3];
let b = [1,2,2,4];
let aSet = new Set(a);
let bSet = new Set(b);
//并集(去重)
let union = Array.from(new Set(a.concat(b))); // [1,2,3,4]
//交集
let intersection = Array.from(new Set(a.filter(v => bSet.has(v)))); // [2]
//差集
let differenceNew = Array.from(new Set(a.concat(b).filter(v => aSet.has(v) && !bSet.has(v))); // [3]
ES7
let a = [1,2,3];
let b = [1,2,2,4];
//并集(去重)
let union = a.concat(b.filter(v => !a.includes(v))); // [1,2,3,4]
//交集
let intersection = a.filter(v => b.includes(v)); // [1,2]
//差集
let difference = a.concat(b).filter(v => a.includes(v) && !b.includes(v)); // [3]
数组遍历延迟执行
for (let i = 0; i < fileIds.length; i++) {
setTimeout(() => {
let params = {
fileId: fileIds[i],
page: { page: 1, pageSize: 999 }
}
//每三秒用遍历的item请求一次接口
service.queryFileOrNoticeReadInfoList(params).then(res => {
res.data.map(item=>{
if (item.memberId == memberId && item.readStatus == true)
readedFileIds.push(item.fileId)
})
}).catch(error => {
reject(error)
})
if (i >= fileIds.length -1) {
let totalReadIds = [...localReadIds, ...readedFileIds]
// 缓存已读ids
localStorage.setItem('readedFileIds', JSON.stringify(totalReadIds))
resolve(totalReadIds)
}
}, 3000 * i)
}
网友评论