从多个数组创建唯一的数组(多个)

时间:2018-12-20 15:44:58

标签: javascript arrays typescript

我正在尝试以下

Input:
myarray1=['Tag A','Tag B','Tag C']
myarray2=['Tag B','Tag C']
myarray3=['Tag A','Tag D']

Output:

outputArray=['Tag A','Tag B','Tag C','Tag D']

输出数组应包含输入数组中的唯一值。

正在打字稿中尝试此操作,但无法从输入数组中找到唯一值。 关于如何以最佳方式实现这一目标的任何建议

4 个答案:

答案 0 :(得分:3)

将合并的数组传递到Set中,然后将其传播到结果数组中

myarray1=['Tag A','Tag B','Tag C']
myarray2=['Tag B','Tag C']
myarray3=['Tag A','Tag D']

const uniques = [...new Set(myarray1.concat(myarray2,myarray3))]

console.log(uniques)

答案 1 :(得分:2)

您可以使用 ES6 SpreadSet

轻松完成此操作

myarray1=['Tag A','Tag B','Tag C']
myarray2=['Tag B','Tag C']
myarray3=['Tag A','Tag D']
const uniqueArr = [...new Set([...myarray1,...myarray1,...myarray3])];
console.log(uniqueArr)

答案 2 :(得分:1)

非常简单,仅使用数组函数,首先包含所有数组,然后使用fitler函数简单地确保只有唯一的值。

const myarray1 = ['Tag A', 'Tag B', 'Tag C'],
  myarray2 = ['Tag B', 'Tag C'],
  myarray3 = ['Tag A', 'Tag D'];

const mergedArray = Array.concat(myarray1, myarray2, myarray3).filter((s, i, array) => array.indexOf(s) === i);
console.log(mergedArray);

答案 3 :(得分:1)

您可以使用reduce Setspread运算符来完成此操作。

let arr1=['Tag A','Tag B','Tag C']
let arr2=['Tag B','Tag C']
let arr3=['Tag A','Tag D']

let arr = [arr1,arr2,arr3]
let op = [...new Set( arr.reduce((o,c)=>o.concat(c),[]))];

console.log(op);