給定 n 個集合/陣列,我想確定公共元素以及它們對哪些集合是公共的。
這與

當然,像所有解決方案一樣,可能有更有效的方法來做到這一點。歡迎更多回復。
uj5u.com熱心網友回復:
一種“愚蠢”的解決方案:
const arr = [
{ arrProps: [{name: '1', prop2: 'aaa'}], arrValues: ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'] },
{ arrProps: [{name: '2', prop2: 'bbb'}], arrValues: ['taco', 'fish', 'apple', 'pizza', 'car'] },
{ arrProps: [{name: '3', prop2: 'ccc'}], arrValues: ['banana', 'pizza', 'fish', 'apple', 'orange' ] },
{ arrProps: [{name: '4', prop2: 'ddd'}], arrValues: ['grape', 'pear', 'chicken', 'car', 'orange'] }
];
const result = arr
.flatMap(({ arrValues }) => arrValues ) // all values
.filter((value, index, coll) => coll.indexOf(value) === index) //unique values
.reduce((acc, value) => {
const propName = arr
.filter((obj) => obj.arrValues.includes(value))
.map((obj) => obj.arrProps[0].name);
acc[value] = (acc[value] ? [...acc[value], propName] : [propName])
.join(',');
return acc;
}, {})
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
更新
我重新考慮了我的解決方法,并意識到它從根本上是錯誤的。
更新的解決方案:
const arr = [
{ arrProps: [{name: '1', prop2: 'aaa'}], arrValues: ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'] },
{ arrProps: [{name: '2', prop2: 'bbb'}], arrValues: ['taco', 'fish', 'apple', 'pizza', 'car'] },
{ arrProps: [{name: '3', prop2: 'ccc'}], arrValues: ['banana', 'pizza', 'fish', 'apple', 'orange' ] },
{ arrProps: [{name: '4', prop2: 'ddd'}], arrValues: ['grape', 'pear', 'chicken', 'car', 'orange'] }
];
const result = arr.reduce((acc, { arrProps: [{ name }], arrValues }) => {
arrValues.forEach((value) => {
acc[value] = acc[value] ? `${acc[value]},${name}`: name;
});
return acc;
}, {});
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391076.html
標籤:javascript 查询 节点.js 数组
