我的数组为,我需要删除空值并将其替换为零。
我已经取得了很大的成就。当我检查数组长度为8但它只显示2个元素。用零代替它的最佳方法是什么。var a = [];
a[3] = 5
a[5] = 15
console.log(a.length) // 6
console.log(a) // [empty,empty,empty,5,empty,15]
how can i make the output as [0,0,0,5,0,15]
//以这种方式尝试不起作用
a.map(o => o !== null ? o : 0)
答案 0 :(得分:3)
一种方法是使用Array.from
,它从0到数组的length
遍历每个元素(与map
不同,var a = [];
a[3] = 5
a[5] = 15
a = Array.from(a, item => item || 0);
console.log(a);
只对数组上实际存在的属性进行遍历) )
typeof
如果您不想用0替换数组中可能存在的非零假值,则可以执行var a = [];
a[3] = 5
a[2] = null;
a[5] = 15
a = Array.from(a, item => typeof item === 'undefined' ? 0 : item);
console.log(a);
检查:
stacked_rnn_cell = list()
for i in range(config.num_layers):
rnn_cell = tf.contrib.rnn.LSTMCell(num_units=config.dim_hidden)
stacked_rnn_cell.append(rnn_cell)
rnn_cell = tf.contrib.rnn.MultiRNNCell(cells=stacked_rnn_cell, state_is_tuple=True)
答案 1 :(得分:0)
您可以尝试一下,
var a = [];
a[3] = 5
a[2] = null
a[5] = 15
for (var i = 0; i < a.length; i++) {
if (a[i] == undefined) {
a[i] = 0;
}
}
console.log(a);
另外,您可以使用Array.prototype.map
:
a = a.map(function(val, i) {
return val === undefined ? 0 : val;
});
答案 2 :(得分:0)
您可以使用此功能执行此操作,并将要替换的值设置为0,''或null
function replaceEmptyWith(arr,val) {
var _arr = [];
if (arr && arr.length > 0) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] === undefined) _arr[i] = val;
else _arr[i] = arr[i];
}
return _arr;
}
return arr;
}
var a = [];
a[3] = 5
a[5] = 15
a = replaceEmptyWith(a,0);
我还发现this question可能对您有帮助