gpt4 book ai didi

javascript - 在所有键值对都是唯一的对象数组中查找对象

转载 作者:行者123 更新时间:2023-12-03 23:19:38 24 4
gpt4 key购买 nike

假设我有一个对象数组 {key:string},其中所有键值对都是唯一的(不同对象中允许键或值相同,但键值对相同​​)

const arr = [{a_1:"val_1"}, {a_2:"val_2"}, ..., {a_n:"val_n"}];

我有一个目标对象

const target = {a_i: "val_i"};

我想找到是否 target存在于 arr即如果它的键和值与 arr 中的某个对象匹配.如果为真,那么我想要 arr 中的对象将被退回。

示例:(已编辑)

const target = {foo: "bar"};
const arr = [{foo: "bar"}, {corona: "COVID-19"}, {foo: "notBar"}, {notFoo: "bar"}];

在此示例中,搜索 targetarr将返回 {foo:"bar"}来自 arr .

注意:

arr.find(ob => ob === target);

返回未定义的。

最佳答案

这两个有不同的引用。也许使用 JSON.stringify() 它可以工作。

const target = {foo: "bar"};
const arr = [{foo: "bar"}, {corona: "COVID-19"}];

const result = arr.find(ob => JSON.stringify(ob) === JSON.stringify(target));

console.log(result);

或者更好的选择是使用 .every()如下所示:

const target = {foo: "bar"};
const arr = [{foo: "bar"}, {corona: "COVID-19"}];
const keysT = Object.keys(target);

const result = arr.find(e => {
const keysE = Object.keys(e);

return keysE.length === keysT.length &&
keysE.every(k => e[k] === target[k])
});

console.log(result);

希望对您有所帮助!

关于javascript - 在所有键值对都是唯一的对象数组中查找对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60829522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com