为了账号安全,请及时绑定邮箱和手机立即绑定

从多个数组中获取唯一值

从多个数组中获取唯一值

大话西游666 2022-10-21 10:18:10
这是我拥有的数组: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];我想运行一个函数并获取只出现一次的元素列表,所以输出应该是:[F, D, G]谢谢!
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超13个赞

您可以使用一个对象来存储每个值的频率,并仅获取频率为 1 的条目。下面的代码.flat(Infinity)用于确保它适用于任何级别的嵌套数组;如果您没有任何嵌套数组,只需使用即可.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));



查看完整回答
反对 回复 2022-10-21
?
HUX布斯

TA贡献1876条经验 获得超6个赞

这个解决方案的复杂度可能不好


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);


查看完整回答
反对 回复 2022-10-21
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号