Open david2tdw opened 4 years ago
方法2:利用reduce方法遍历数组, reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值。 初始值放一个空数组为存储过滤后的结果。
var arr = [
{
key: '01',
value: '乐乐'
},
{
key: '02',
value: '博博'
},
{
key: '03',
value: '淘淘'
},
{
key: '04',
value: '哈哈'
},
{
key: '01',
value: '乐乐'
}
]
var obj = {}
arr = arr.reduce(function(item, next) {
obj[next.key] === next.key + next.value ? '' : (obj[next.key] = next.key + next.value) && item.push(next)
return item
}, [])
console.log(arr) // [{key: "01", value: "乐乐"},{key: "02", value: "博博"},{key: "03", value: "淘淘"},{key: "04", value: "哈哈"}]
简化版: 只判断数组中对象的id是否相同。
var arr = [
{
key: '01',
value: '乐乐'
},
{
key: '02',
value: '博博'
},
{
key: '03',
value: '淘淘'
},
{
key: '04',
value: '哈哈'
},
{
key: '01',
value: '乐乐'
}
]
// 方法1:利用对象访问属性的方法,判断对象中是否存在key
var result = []
var obj = {}
for (var i = 0; i < arr.length; i++) {
if (!obj[arr[i].key]) {
result.push(arr[i])
obj[arr[i].key] = true
}
}
console.log(result) // [{key: "01", value: "乐乐"},{key: "02", value: "博博"},{key: "03", value: "淘淘"},{key: "04", value: "哈哈"}]
// 方法2:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
var obj = {}
arr = arr.reduce(function(item, next) {
obj[next.key] ? '' : (obj[next.key] = true && item.push(next))
return item
}, [])
console.log(arr) // [{key: "01", value: "乐乐"},{key: "02", value: "博博"},{key: "03", value: "淘淘"},{key: "04", value: "哈哈"}]
方法1:利用对象访问属性的方法,判断对象中是否存在key + value