用三元运算符进行数组解构

时间:2018-11-26 12:00:40

标签: javascript arrays ecmascript-6 destructuring

我正在尝试用唯一值连接两个数组,如果第二个数组有时是字符串。

也许有一个错误,但这是我的三个尝试:

let a = 'abcdefg'
// First try
[...new Set([...[], ...(typeof(a) == 'string'? [a]: a))]
// Second try
[...new Set([...[], [(typeof(a) == 'string'? ...[a]: ...a)]]
// Third try
[...new Set([...[], (typeof(a) == 'string'? ...[a]: ...a)]

3 个答案:

答案 0 :(得分:3)

代替

[...new Set([...[], ...(typeof a === 'string' ? [a] : a))]

拿起,注意最后的圆形,方形,圆形和方括号。

[...new Set([...[], ...(typeof a === 'string' ? [a] : a)])]
//                                                      ^

let a = 'abcdefg'

console.log([...new Set([...[], ...(typeof a === 'string' ? [a] : a)])]);

答案 1 :(得分:2)

您可以使用Array.concat()而不是使用传播,因为它以相同的方式处理组合数组和值:

const a = 'abcdefg'
console.log([...new Set([].concat([], a))])
console.log([...new Set([].concat([], [a]))])

答案 2 :(得分:0)

如果我正确理解,如果a参数是一个字符串而不是一个集合,那么搜索唯一值和Set的需求就没有意义了。然后您可以将typeof a === 'string' ? [a] : [...new Set(a)]

短路

let a = 'abcdefg'

const createArr = a => typeof a === 'string' ? [a] : [...new Set(a)];

console.log(createArr(a));
console.log(createArr([a,a,'aa']));