gpt4 book ai didi

javascript - 检查两个数组是否有一个具有相同属性的对象

转载 作者:行者123 更新时间:2023-12-05 09:27:54 26 4
gpt4 key购买 nike

这是我的目标:比较两个对象并找出是否有 1 个或多个项目是相同的。如果有 1 个或多个共同点,则返回 true 否则(没有共同点)返回 false

当前问题: 我正在尝试将 .some() 方法与来自 API 的 1 个对象和 1 个本地对象一起使用,但有点困惑为什么它是不工作...任何想法?它应该返回 true,因为 John 在两个对象中,但它返回 false 🙃

代码示例: 在此示例中,它应返回 true,因为 John 是一个既是对象 1 (result1) 又是对象 2 (result 2) 的名称。但是,它返回 false

有谁能帮助我理解我在这里做错了什么吗?

var result1 = [
{id:1, name:'Sandra', type:'user', username:'sandra'},
{id:2, name:'John', type:'admin', username:'johnny2'},
{id:3, name:'Peter', type:'user', username:'pete'},
{id:4, name:'Bobby', type:'user', username:'be_bob'}
];

var result2 = [
{id:2, name:'John', email:'johnny@example.com'},
{id:4, name:'Bobby', email:'bobby@example.com'}
];

const hasSimilarElement = result1.some((item) => item.name === result2.name);

console.log(hasSimilarElement);

最佳答案

您可以创建一个函数,它接受一个函数 f 用于查找,然后是两个数组 xsys:

const checkBy = f => (xs, ys) => {
let [long, short] = xs.length > ys.length ? [xs, ys] : [ys, xs];
short = new Set(short.map(f));
return long.some(x => short.has(f(x)));
};

然后:

const checkByName = checkBy(x => x.name);

checkByName( [ {id: 1, name:'Sandra', type: 'user', username: 'sandra'}
, {id: 2, name: 'John', type: 'admin', username: 'johnny2'}
, {id: 3, name: 'Peter', type: 'user', username: 'pete'}
, {id: 4, name: 'Bobby', type: 'user', username: 'be_bob'}]

, [ {id: 2, name: 'John', email: 'johnny@example.com'}
, {id: 4, name: 'Bobby', email: 'bobby@example.com'}]);
//=> true

checkByName( [ {id: 1, name:'Sandra', type: 'user', username: 'sandra'}
, {id: 2, name: 'John', type: 'admin', username: 'johnny2'}
, {id: 3, name: 'Peter', type: 'user', username: 'pete'}
, {id: 4, name: 'Bobby', type: 'user', username: 'be_bob'}]

, [ {id: 2, name: 'xxxx', email: 'johnny@example.com'}
, {id: 4, name: 'yyyyy', email: 'bobby@example.com'}]);
//=> false

关于javascript - 检查两个数组是否有一个具有相同属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71946068/

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