Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从“中筛选嵌套数组”;空";及;“未定义”;价值观_Javascript_Arrays_For Loop_Filter - Fatal编程技术网

Javascript 如何从“中筛选嵌套数组”;空";及;“未定义”;价值观

Javascript 如何从“中筛选嵌套数组”;空";及;“未定义”;价值观,javascript,arrays,for-loop,filter,Javascript,Arrays,For Loop,Filter,如果我有一个JSON数组: arrays = [ [ undefined, ",", " ", "simple" ], [ undefined, null, " ", "phrase" ], [ undefined, ",", " "

如果我有一个JSON数组:

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);
});