簡體   English   中英

從多個 arrays 中獲取唯一值

[英]Get unique values from multiple arrays

這是我擁有的 arrays:

var a = [A];
var b = [F, A];
var c = [B, A];
var d = [C, B, A];
var e = [D, C, B, A];
var f = [E, C, B, A];
var g = [G, E, C, B, A];

我想運行 function 並獲取僅出現一次的元素列表,因此 output 應該是:

[F, D, G]

謝謝!

您可以使用 object 存儲每個值的頻率,並僅獲取頻率為 1 的條目。 下面的代碼使用.flat(Infinity)來確保它適用於任何級別的嵌套 arrays; 如果您沒有任何嵌套的 arrays,只需使用.flat()即可。

 var a = ['A']; var b = ['F', 'A']; var c = ['B', 'A']; var d = ['C', 'B', 'A']; var e = ['D', 'C', 'B', 'A']; var f = ['E', 'C', 'B', 'A']; var g = ['G', 'E', 'C', 'B', 'A']; function getUniqueValues(...args){ return Object.entries( args.flat(Infinity).reduce((acc,curr)=>(acc[curr] = (acc[curr]?? 0) + 1, acc), {}) ).filter(([key,val])=>val===1).map(([key])=>key); } console.log(getUniqueValues(a,b,c,d,e,f,g));

這個解決方案的復雜度可能不好

const input: string[][] =
  [['A'],
  ['F', 'A'],
  ['B', 'A'],
  ['C', 'B', 'A'],
  ['D', 'C', 'B', 'A'],
  ['E', 'C', 'B', 'A'],
  ['G', 'E', 'C', 'B', 'A']];
let output: string[] = [];
let flagged: string[] = [];

input.filter(innerArray => {
    innerArray.filter(elem => {
        if(!output.includes(elem) && !flagged.includes(elem))
            output.push(elem);
        else
        {
            flagged.push(elem);
            output = output.filter(i => { return i !== elem });
        }
    });
});

console.log(output);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM