如果我有一个这样的阵列:
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' ]
}
]
答案 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
。
然后过滤掉所有虚假值:null
,undefined
,false
,+0
,-0
,NaN
和{{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;
});