仅在满足条件的情况下如何将元素添加到数组

时间:2018-09-07 08:48:28

标签: javascript arrays ternary-operator arrow-functions

有一个箭头函数可以创建一个像这样的数组:

const myFunction = () => ["a", "b", "c"];

我想为其添加一个参数,如果该参数为true,则必须添加另一个元素。

就像这里:

const myFunction = (arg) => ["a", "b", "c", arg ? "d" : null];

此解决方案的问题在于,如果arg !== true仍会添加一个null元素,但是在这种情况下我不想添加任何内容。

8 个答案:

答案 0 :(得分:2)

您可以使用数组扩展。根据{{​​1}}的值,空数组或包含arg的数组将散布到结果数组中:

d

答案 1 :(得分:1)

您可以使用concat

const myFunction = (arg) => ["a", "b", "c"].concat(arg ? ["d"] : []);

console.log(myFunction(true));
console.log(myFunction(false));

答案 2 :(得分:1)

您可以使用Array push()

const myFunction = (arg) => {
  const arr = ["a", "b", "c"];
  if (arg) arr.push("d");
  return arr;
};

console.log(myFunction(true));
console.log(myFunction(false));

答案 3 :(得分:0)

您可以使功能更长一点,

  • 创建一个临时数组
  • 根据需要将元素追加到临时数组中,
  • 并在完成后返回临时数组

const myFunction = (arg) => {
  var tempArray = ["a", "b", "c"];
  
  if (arg) {
    tempArray.push("d");
  }
  
  return tempArray;
};

console.log(myFunction(true) + "");
console.log(myFunction(false) + "");

答案 4 :(得分:0)

const myFunction = (arg) => {
  ret = ['a', 'b', 'c']
  return arg === true ? ret.concat('d') : ret;
}

在其他解决方案中,您拥有arg ?而不是arg === true ?。 如果您希望myFunction仅对'd'返回带有arg = true的数组,那么您应该使用我的解决方案。如果您希望它返回'd'(例如,arg = 17,而不返回arg = 0,则使用其他解决方案。

答案 5 :(得分:0)

您也可以这样做:

const myMethod = (arg) => {
   var tempArray = ["item 1", "item 2", "item 3"];

   !arg || tempArray.push("item 4");

   return tempArray;
};

console.log(myMethod(false));
console.log(myMethod(true));

答案 6 :(得分:0)

Ori有the right answer。将其用于所有现代浏览器。如果由于某些原因您仍然停留在旧版浏览器上-

["a", "b", "c"].concat(arg ? 'd' : [])

答案 7 :(得分:0)

如果将数组存储在变量中,则可以这样:

const arr = ["a", "b", "c"];
const myFunction = arg => arg === true ? [...arr, "d"] : arr;

console.log(myFunction(true));
console.log(myFunction());