如果两个对象数组具有值,则比较并返回布尔值

时间:2020-05-03 03:43:19

标签: javascript reactjs lodash

我有两个类似的对象数组,

let A = [{id: "1"}, {id: "2"},{id: "3" }]

let B = [{id: "3"}, {id: "2"}]

现在,我正在遍历A

return _.map(A) => ({
    id: A.id,
    isAvaliable: //This needs to be like weather B includes A on the basis of ID , means does B object has this A client ID if yes then set it true or false
})

所以,我要得到的最终对象将是

const result = [{
{id: "1", isavaliable: false},
{id: "2", isavaliable: true},
{id: "3", isavaliable: true},

}
]

那么,我该如何实现呢? 谢谢。

3 个答案:

答案 0 :(得分:1)

首先创建B id的数组或Set,然后可以.map A并根据ID是否包含在集合中来设置isavailable

const A = [{id: "1"}, {id: "2"},{id: "3" }];
const B = [{id: "3"}, {id: "2"}];
const haveIds = new Set(B.map(({ id }) => id));

const result = A.map(({ id }) => ({ id, isavailable: haveIds.has(id) }));
console.log(result);

无需依赖外部库,Array.prototype.map可以正常工作。

答案 1 :(得分:1)

let A = [{ id: "1" }, { id: "2" }, { id: "3" }];

let B = [{ id: "3" }, { id: "2" }];

const merge = (arr1, arr2) =>
  arr1.map((a) => ({
    id: a.id,
    isAvaliable: !!arr2.find((b) => b.id === a.id),
  }));
console.log(merge(A, B));

答案 2 :(得分:1)

使用lodash'查找'检查数组B中的ID

import json

data = json.load(open("data.json"))

def translate(w):
    return data[w]

word = input("Enter word: ")

print(translate(word))

相关问题