gpt4 book ai didi

javascript - 获取除对象数组中第一次出现以外的重复项

转载 作者:行者123 更新时间:2023-11-30 14:09:52 25 4
gpt4 key购买 nike

我希望能够根据地点和关键字返回对象数组中除第一次出现以外的重复项。两者都应该匹配并返回新数组中的文档。这是我的试运行:

var things = [
{place: 'hello', keyword: 'hey', id: 0},
{place: 'hi', id: 1},
{place: 'hello', keyword: 'hey', id: 2},
{place: 'hello', keyword: 'man', id: 3}
]
var duplicates = [];

things.forEach((item, index) => {
if(things.indexOf(item.place) != index && things.indexOf(item.keyword) != index) {
duplicates.push(item);
}
});

预期输出:

[{place: 'hello', keyword: 'hey', id: 2}]

任何帮助都会很棒(没有任何框架,只有 ES6 或更早版本)。谢谢

编辑:它应该匹配多个指定的值,例如关键字和地点。

最佳答案

如果计数大于 1,您可以计数相同的键并过滤

const
getKey = o => keys.map(k => o[k]).join('|'),
keys = ['place', 'keyword'],
things = [{ place: 'hello', keyword: 'hey', id: 0 }, { place: 'hi', id: 1 }, { place: 'hello', keyword: 'hey', id: 2 }, { place: 'hello', keyword: 'man', id: 3 }],
hash = Object.create(null),
duplicates = things.filter(o =>
(k => (hash[k] = (hash[k] || 0) + 1) > 1)
(getKey(o))
);

console.log(duplicates);

关于javascript - 获取除对象数组中第一次出现以外的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54685536/

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