【发布时间】:2018-08-17 14:37:01
【问题描述】:
我有 2 个数组:
let array1 = ["a", "b", "c"]
const array2 = [{a: 23, b: 22, c: 14}, {a: 78, b: 22, c: 14}, {id: 3, a: 23, b: 80, c: 14}]
我需要根据以下条件更新array1:
对于数组中的每个元素,我需要返回一个对象:
[{name: 'a', isDifferent: true}, {name: 'b', isDifferent: true}, {name: 'c', isDifferent: false}]
其中 isDifferent 为真,对于给定名称,至少有一个值不同。
这是我的功能。它有效。
但我认为有更简单的方法可以做到这一点。
array1 = array1.map(el => {
const newObj = {}
newObj.name = el
let isDifferent = false
for (let i = 0; i < array2.length; i++) {
if (array2[i][el] !== array2[0][el]) {
isDifferent = true
break
}
}
newObj.isDifferent = isDifferent
return newObj
})
【问题讨论】:
-
这对我来说看起来很不错 - 你能更具体地谈谈“更简单”的方式吗?您有性能问题吗?
-
旁注如果变量要更改,则不应使用 const 定义变量,因为它是可变数据类型,不会引发任何错误。
标签: javascript arrays object compare