【问题标题】:How to filter nested arrays from "null" and "undefined" values?如何从“null”和“undefined”值中过滤嵌套数组?
【发布时间】:2014-07-09 23:27:54
【问题描述】:

如果我有一个 JSON 数组:

arrays = 
   [
      [
         undefined,
         ",",
         " ",
         "simple"
      ],
      [
         undefined,
         null,
         " ",
         "phrase"
      ],
      [
         undefined,
         ",",
         " ",
         "one"
      ],
      [
         undefined,
         null,
         " ",
         "another"
      ],
      [
         undefined,
         null,
         " ",
         "phrase"
      ]
   ]

我想从 undefinednull 值中过滤:

arrays.forEach(function(array){array.filter(function(n){return !!n})});

arrays.forEach(function(array){array = array.filter(function(n){return !!n})});

但它返回相同的数组,没有任何变化。

否则,如果我直接使用内部数组,它可以工作:

rest_words[0].filter(function(n){return !!n});
=> [",", " ", "simple"]

为什么forEach() 不允许修改数组?它是否仅按值迭代?通过迭代来修改数组的最佳解决方案是什么?

我希望除了通过for(i=0, i<arrays.length, i++){arrays[i] = arrays[i].filter(...)} 迭代之外还有更多的东西

【问题讨论】:

    标签: javascript arrays for-loop filter


    【解决方案1】:

    您只是分配给那里的本地 array 变量,而不是写入实际的 arrays 属性。你可以这样做

    arrays.forEach(function(array, i, all) {
        all[i] = array.filter(Boolean); // where all===arrays
    });
    

    但你最好使用map 创建一个新数组:

    refinedArrays = arrays.map(function(array) {
        return array.filter(Boolean);
    });
    

    【讨论】:

      【解决方案2】:

      使用Array.map():

      arrays = arrays.map(function(array) {
          return array.filter(function(n){ return n != null; });
      });
      

      我使用了n != null,它将保留除nullundefined 之外的任何值。而!!n 将排除""0

      【讨论】:

        【解决方案3】:

        试试这个:

        arrays.forEach(function(array, index){
          arrays[index] = array.filter(function(n){return !!n});
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-02-19
          • 1970-01-01
          • 2020-07-18
          • 2021-02-17
          • 2022-12-31
          • 2021-04-14
          • 2018-11-06
          相关资源
          最近更新 更多