仅在变量包含值的情况下创建带有变量的数组

时间:2019-04-30 06:23:18

标签: javascript

我具有以下值。 我有3个变量:A,B,C。 如果这三个值如下所示:

 this.A= "1";
 this.B= "2";
 this.C= "3";

则预期的数组为:

let D=[{id:"1"},{id:"2"},{id:"3"}]

如果值如下:

 this.A= "1";
 this.B="" or null;
 this.C= "3";

则预期的数组为:

let D=[{id:"1"},{id:"3"}]

2 个答案:

答案 0 :(得分:1)

您可以利用:

它变成:

let D = [this.A, this.B, this.C]
  .filter(val => !['', null].includes(val))
  .map(val => ({id: val}));

演示(在这种情况下为空字符串):

class Foo {
  constructor() {
    this.A = "1";
    this.B = "";
    this.C = "3";

    let D = [this.A, this.B, this.C]
      .filter(val => ![undefined, null, ''].includes(val))
      .map(val => ({id: val}));

    console.log(D);
  }
}

new Foo();

答案 1 :(得分:1)

除了Jetos出色的答案外,还可以使用Array.reduce

const D = [this.A, this.B, this.C]
  .reduce((acc, curr) => curr === null ? acc : acc.concat([{id: curr}]), [])