sta*_*tic 1 javascript arrays for-loop filter
如果我有一个 JSON 数组:
arrays =
[
[
undefined,
",",
" ",
"simple"
],
[
undefined,
null,
" ",
"phrase"
],
[
undefined,
",",
" ",
"one"
],
[
undefined,
null,
" ",
"another"
],
[
undefined,
null,
" ",
"phrase"
]
]
Run Code Online (Sandbox Code Playgroud)
我想从中过滤undefined和null值:
arrays.forEach(function(array){array.filter(function(n){return !!n})});
Run Code Online (Sandbox Code Playgroud)
或者
arrays.forEach(function(array){array = array.filter(function(n){return !!n})});
Run Code Online (Sandbox Code Playgroud)
但它返回相同的数组而没有任何更改。
否则,如果我直接使用内部数组,它会起作用:
rest_words[0].filter(function(n){return !!n});
=> [",", " ", "simple"]
Run Code Online (Sandbox Code Playgroud)
为什么forEach()不允许修改数组?它是否仅按值迭代?通过迭代修改数组的最佳解决方案是什么?
我希望有更多的东西然后只是通过迭代 for(i=0, i<arrays.length, i++){arrays[i] = arrays[i].filter(...)}
您只是在array那里分配给局部变量,而不是写入实际arrays属性。你可以做
arrays.forEach(function(array, i, all) {
all[i] = array.filter(Boolean); // where all===arrays
});
Run Code Online (Sandbox Code Playgroud)
但是你最好使用map创建一个新数组:
refinedArrays = arrays.map(function(array) {
return array.filter(Boolean);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
276 次 |
| 最近记录: |