gpt4 book ai didi

javascript - 查找动态数组的对象元素 Javascript 中的公共(public)元素

转载 作者:行者123 更新时间:2023-12-01 03:26:01 25 4
gpt4 key购买 nike

关于这个主题有很多问题,但我找不到直接解决我遇到的问题的答案。

这是一个:Find common elements in 1 array using Javascript

第一个区别是我有不同类型的数组,它的元素是带有键值对的对象,其中键是字符串,值是整数数组。

第二个区别是数组是动态的,这意味着有时它可能有零个元素,有时可能有 3 个对象元素。

我正在分享下面的示例数组:

const array = [
{"key1":[1,2,3]},
{"key2":[2,3,4]},
{"key3":[2,5,6]},
];

第三个区别是元素的顺序很重要,因此最终结果应该输出所有后续数组中存在的第一个元素的值。

结果应该是:

const result = [2];

因为2是这三个元素的唯一公共(public)整数。

正如前面提到的,数组有时可能只有 1 个或 2 个元素,或者没有元素,应该考虑这些情况。

编辑1:按照评论中的要求数组的值是唯一的

最佳答案

由于一个值​​只能在数组中出现一次,因此您可以连接数组,统计出现的次数,并过滤掉那些不等于原始数组长度的值。

const findRecuring = (array) =>
[...
[].concat(...array.map((o) => Object.values(o)[0])) // combine to one array
.reduce((m, v) => m.set(v, (m.get(v) || 0) + 1), new Map()) // count the appearance of all values in a map
] // convert the map to array of key/value pairs
.filter(([, v]) => v === array.length) // filter those that don't appear enough times
.map(([k]) => k); // extract just the keys

/** Test cases **/
console.log('Several:', findRecuring([
{"key1":[6,1,2,3,8]},
{"key2":[2,6,3,4,8]},
{"key3":[2,5,6,8]},
]).join());

console.log('None: ', findRecuring([
{"key1":[9,0,11]},
{"key2":[2,6,3,4,8]},
{"key3":[2,5,6,8]},
]).join());

关于javascript - 查找动态数组的对象元素 Javascript 中的公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44823326/

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