Javascript 如何从“中筛选嵌套数组”;空";及;“未定义”;价值观
如果我有一个JSON数组:Javascript 如何从“中筛选嵌套数组”;空";及;“未定义”;价值观,javascript,arrays,for-loop,filter,Javascript,Arrays,For Loop,Filter,如果我有一个JSON数组: arrays = [ [ undefined, ",", " ", "simple" ], [ undefined, null, " ", "phrase" ], [ undefined, ",", " "
arrays =
[
[
undefined,
",",
" ",
"simple"
],
[
undefined,
null,
" ",
"phrase"
],
[
undefined,
",",
" ",
"one"
],
[
undefined,
null,
" ",
"another"
],
[
undefined,
null,
" ",
"phrase"
]
]
我想从未定义的
和null
值中筛选这些值:
arrays.forEach(function(array){array.filter(function(n){return !!n})});
或
但是它返回相同的数组,没有任何更改
否则,如果我直接使用内部数组,它会工作:
rest_words[0].filter(function(n){return !!n});
=> [",", " ", "simple"]
为什么forEach()
不允许修改数组?它是否只按值进行迭代?通过迭代修改数组的最佳解决方案是什么
我希望有更多的东西,而不仅仅是通过for(I=0,I尝试以下内容:
arrays.forEach(function(array, index){
arrays[index] = array.filter(function(n){return !!n});
});
试试这个:
arrays.forEach(function(array, index){
arrays[index] = array.filter(function(n){return !!n});
});
使用Array.map()
:
我使用了n!=null
,它将保留除null
和undefined
之外的任何值。而!!.n
也将排除”
和0
。使用Array.map()
:
我使用了n!=null
,它将保留除null
和未定义的之外的任何值。然而!!n
也将排除”
和0
。您只在那里分配到本地数组
变量,而不写入实际的数组
属性。您可以这样做
arrays.forEach(function(array, i, all) {
all[i] = array.filter(Boolean); // where all===arrays
});
但您最好使用创建新阵列:
refinedArrays = arrays.map(function(array) {
return array.filter(Boolean);
});
您在那里只分配给本地数组
变量,而不写入实际的数组
属性。您可以这样做
arrays.forEach(function(array, i, all) {
all[i] = array.filter(Boolean); // where all===arrays
});
但您最好使用创建新阵列:
refinedArrays = arrays.map(function(array) {
return array.filter(Boolean);
});