【问题标题】:Substitute value in array替换数组中的值
【发布时间】:2017-11-30 14:08:01
【问题描述】:

有没有一种巧妙的方法来替换/替换数组中的值

例如。

var array = [[1,2,3,'null'],['null',2,3,4],['null','null','null','null'],[1,1,1,1]]

答案应该是我将写入电子表格的内容

[[1,2,3,''],['',2,3,4],['','','',''],[1,1,1,1]]

实际的数组比这个大得多,跨越 1000 多行

【问题讨论】:

  • @Max Makhrov 谢谢你的回答似乎效果最好。正如非常正确地指出的那样,谷歌电子表格脚本不能接受 =>。我希望不要使用地图的优雅,但不能。

标签: javascript arrays multidimensional-array google-apps-script google-sheets


【解决方案1】:

如果你可以使用Array.prototype.map,你可以这样做:

var arrayWithoutNulls = array.map(line => line.map(el => el === 'null' ? '' : el))

根据@charlietfl 的建议进行编辑:这将返回一个新数组。所以将它绑定到一个新变量(如上面的示例)或立即返回它,但请记住array 变量仍将具有null 元素。

【讨论】:

  • 应该注意这会返回一个新数组并且不会修改现有数组
  • 在几个 cmets 中,OP 和回答者提到“谷歌电子表格脚本不能接受 =>”。他们实际上在谈论google-apps-script
  • 是的,他们在我发布答案后对此发表了评论。
【解决方案2】:

请尝试:

var array = [[1,2,3,'null'],['null',2,3,4],['null','null','null','null'],[1,1,1,1]];


var row = [];
var cols = array[0].length;

for (var i = 0, l = array.length; i < l; i++)
{
  row = array[i];
  for (var col = 0; col < cols; col++)
  {
    if (row[col] === 'null') { row[col] = ''; } 
  }
}

Logger.log(array); // [[1, 2, 3, ], [, 2, 3, 4], [, , , ], [1, 1, 1, 1]]

注意:箭头 =&gt; 在 Google 表格中不起作用,对 better performance 使用了简单的循环。

【讨论】:

  • 谢谢您的回答似乎效果最好。正如非常正确地指出的那样,谷歌电子表格脚本不能接受 =>。我想使用地图的优雅,但不能。 @Peter Leger 无论出于何种原因,这种方法似乎在将数组写入电子表格时抛出了一个错误,它在某处从数组中删除了一个元素,该元素表示该数组的宽度不正确。
  • @mfizz: @replies 仅在提及的用户以作者、编辑或评论员身份参与帖子时触发通知,儿子彼得莱杰可能不知道您的评论。
【解决方案3】:

如果要修改原始数组:

var arrs = [
  [1, 2, 3, 'null'],
  ['null', 2, 3, 4],
  ['null', 'null', 'null', 'null'],
  [1, 1, 1, 1]
];

arrs.forEach(function(arr, i) {
  arrs[i] = arr.join(",").replace(/null/g, '').split(",");
})

console.log(arrs);

【讨论】:

    【解决方案4】:

    您需要使用map。首先在包含数组上,然后在嵌套在里面的数组上:

    var array = [
      [1, 2, 3, 'null'],
      ['null', 2, 3, 4],
      ['null', 'null', 'null', 'null'],
      [1, 1, 1, 1]
    ]
    
    const newArray = array.map(arr => {
      return arr.map(elem => {
        return elem === 'null' ? '' : elem;
      });
    });
    
    console.log(newArray);

    【讨论】:

      【解决方案5】:

      要修改 orig 数组,您实际上可以使用普通的 foreach 循环,然后使用 splice 方法替换数组中的项目

      var array = [[1,2,3,'null'],['null',2,3,4],['null','null','null','null'],[1,1,1,1]]
      
      
      array.forEach(a => a.forEach((b,i) => {
        if (b === 'null') {
          a.splice(i, 1 , '')
        }
      }))
      console.log(array)

      【讨论】:

        猜你喜欢
        • 2020-06-26
        • 2013-09-11
        • 2021-04-06
        • 1970-01-01
        • 2014-03-09
        • 1970-01-01
        • 2017-05-08
        • 2019-09-26
        相关资源
        最近更新 更多