javascript - 跳过每个()中的第一个元素?

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

我想在一个多维数组上运行一个 every() 函数,它检查一行中的所有元素是否都等于 0。如果是,它们将被删除。

但是,我需要它跳过索引 0 处的元素,该元素始终是文本。有办法吗?

[
["BOOT", 20.0, 20.0, 20.0, 20.0, 20.0, 20.0, 180.0, 180.0, 665.0, 725.0, 725.0, 735.5, 1155.5, 1155.5, 1155.5], 
["IPP", 58.370000000000005, 58.379999999999995, 58.379999999999995, 140.38, 1073.975, 1184.5769999999998, 1724.927, 2086.9438, 2458.2437999999997, 4445.6398, 6067.0398, 6773.639799999999, 7098.639799999999, 7098.639799999999, 7098.639799999999], 
["PPP", 1.5, 131.5, 131.5, 131.5, 131.5, 131.5, 135.0, 135.0, 135.0, 189.95, 231.54999999999998, 231.54999999999998, 556.5500000000001, 556.5500000000001, 806.5500000000001], 
["Rental", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], 
["State owned", 26.116000000000003, 166.116, 169.014, 226.663, 226.663, 345.66300000000007, 524.963, 564.763, 567.4150000000001, 614.4150000000001, 989.4150000000002, 1079.415, 1099.415, 1119.815, 1119.815]
]

   function removeZeros (array) {
     return array.filter(function(arr) {
       return !arr.every(function(elem) { 
        return elem === 0 
       })
     })
   }

在这种情况下,索引 0 处具有“Rental”的行将被删除。

感谢您的帮助。

最佳答案

传递给 every 方法的第二个参数是 index。您可以检查 index 是否为 0,并始终返回 true。例如:

[1, 0, 2, 3].every((elem, index) => { 
   if (index === 0) { 
     return true;
   } 
   return elem === 0; 
}

这样一来,第一个元素就不会在真值测试中被真正考虑到。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every#Parameters

关于javascript - 跳过每个()中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238611/

相关文章:

javascript - 默认下拉字段

javascript - window.close() 在 Jquery 模态中不起作用

arrays - vba,选择一个动态矩阵

javascript - 将 JSON 字符串存储在输入字段值中

javascript - 更新 php 变量并在页面刷新时选择选项

sql - 查询postgres中的文本数组

c++ - char 数组未正确初始化

c - 动态分配二维数组并初始化它(段错误)

java - 试图从 txt 文件中填充二维 ArrayList