添加条件数组元素

时间:2018-07-29 15:28:45

标签: javascript arrays

说我有一个数组定义

var array = [
  "One",
  "Two",
  "Three",
]

...但是我只希望在另一个变量为true时添加“三个”。

var array = [
  "One",
  "Two",
  (addThree ? "Three" : undefined),
]

问题是,如果addThree为false,那么当我只希望数组为[“ One”,“ Two”]时,数组就变成[“ One”,“ Two”,undefined]。

3 个答案:

答案 0 :(得分:4)

您可以使用Array#concatconditional (ternary) operator ?:来检查addThree并获取值或空数组。

空数组不会更改返回数组的长度。

var addThree = false,
    array = ["One", "Two"].concat(addThree ? "Three" : []);
    
console.log(array);

答案 1 :(得分:2)

使用不会改变的静态项目初始化它,然后在条件为真的情况下有条件地添加第三个:

var array = [
  "One",
  "Two",
];

if (addThree) {
   array.push("Three");
}

答案 2 :(得分:2)

有很多方法可以做到这一点。

1。。使用spread operator (...)

var addThree=false;
const array = [
  "One",
  "Two",
  ...(addThree ? ['Three'] : []),
]
console.log(array);

  如果数组文字的

spread运算符(...),如果其操作数为空Array,则不执行任何操作。以这种方式使用split运算符会导致代码略隐。

2。。另一种选择是有条件地插入元素或未定义,然后过滤掉后一个值

var addThree=true;


var array = [
 "One",
  "Two",
  (addThree ? 'Three' : undefined)
].filter(Boolean);
console.log(array);

3。。一种优雅且具有自我描述性的解决方案是使用push()构造Array:

var addThree=true;
const array = [];
array.push('One');
array.push('Two');
if (addThree) {
        array.push('Three');
}
console.log(array);