这不是一个真正的问题,但我喜欢提高我的JavaScript / ES6技能。
我正在尝试找到一种更有效的方法来永远拥有一个数组,无论我的传入变量只有一个值还是一个数组。
我目前正在做的是:
var inp;
// just for the showcase
if (Math.random() > 0.5) {
inp = 'foo';
} else {
inp = ['foo', 'bar'];
}
// this is what I want to optimize
if (Array.isArray(inp)) {
outp = inp;
} else {
outp = [inp];
}
console.log(outp);
我不谈论只是以任何代价缩短代码,但效率和优雅。
答案 0 :(得分:4)
您可以使用isArray
concat
项检查
const outp = [].concat(inp);
它总会给你一个包含元素的数组(不是嵌套的):
[].concat('foo')
// ['foo']
[].concat(['foo'])
// ['foo']
答案 1 :(得分:3)
答案 2 :(得分:0)
许多方法都是可能的。取决于你没有发现的准确度。一个简单的例子:
var outp = Array.isArray(inp) ? inp : in[];
这只不过是代码的简写。
你应该问自己这是否合适。如果你有一个期望一个数组但得到一个字符串作为输入的函数。它应该继续吗?许多接口为此提供了不同的显式方法。例如:add(array)
和addOne(string)
答案 3 :(得分:0)
如果{2}
小于concat
[]
清空数组Math.random
0.5