Javascript:数组中的条件行

时间:2016-08-17 00:46:31

标签: javascript

如果我有一个这样的阵列:

body: [
  [ 'A', 'A value' ],
  [ 'B', 'B value, other' ],
  [ 'C', 'C value' ]
]

如何在C周围包装if语句,以便仅在条件返回true时才添加该行?像这样的东西(伪代码):

body: [
  [ 'A', 'A value' ],
  [ 'B', 'B value, other' ],
  if (x == true) {
    [ 'C', 'C value' ]
  }
]

4 个答案:

答案 0 :(得分:4)

只需push

if (x) {
    yourReference.body.push([ 'C', 'C value' ]);
}

答案 1 :(得分:1)

如果你想避免在数组启动器之后推送项目,你可能更喜欢

body: [
  [ 'A', 'A value' ],
  [ 'B', 'B value, other' ],
  x == true && [ 'C', 'C value' ]
].filter(Boolean)

也就是说,仅当[ 'C', 'C value' ]x == true时,才允许第三个数组项为true。如果是false,请将第三个数组项设为false

然后过滤掉所有虚假值:nullundefinedfalse+0-0NaN和{{1 }}。因此,如果您的数组不包含任何这些方法,请仅使用此方法。

答案 2 :(得分:1)

你也可以建立一个建设者:

[root@laoyang bin]# ./logstash -f ./logstash_conf/first-pipeline.conf 
Settings: Default pipeline workers: 16
Connection refused {:class=>"Manticore::SocketException", :level=>:error}
Pipeline main started

虽然这意味着无论条件如何,都会始终评估您的值。

function ArrayBuilder() {
    this.array = [];
}

ArrayBuilder.prototype.push = function (value) {
    this.array.push(value);
    return this;
};

ArrayBuilder.prototype.pushIf = function (condition, value) {
    if (condition) {
        this.array.push(value);
    }

    return this;
};

答案 3 :(得分:0)

这将循环遍历身体中的所有元素并对每个元素进行条件化。

const body = [

  [ 'A', 'A value' ],
  [ 'B', 'B value, other' ],
  [ 'C', 'C value' ]

];

const newArray = body.map(subArray => {

  if (condition) return subArray;  

});