比较并返回布尔值,如果两个对象数组的值相同或不相同。

问题描述 投票:0回答:1

我有两个数组对象,它们是这样的。

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},

}
]

那么,我如何实现这个目标呢,谢谢。

javascript reactjs lodash
1个回答
1
投票

首先制作一个数组或Set的 B ids,那么你可以 .map A和套 isavailable 由id是否包含在集合中。

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
投票

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));

1
投票

使用lodash'find'检查数组B中的id。

const A = [{id: '1'}, {id: '2'}, {id: '3' }];
const B = [{id: '3'}, {id: '2'}];

const C = _.map(A, item => {

        return {
            id: item.id,
            isAvailable: _.find(B, {id: item.id}) ? true : false
        };
    });
© www.soinside.com 2019 - 2024. All rights reserved.