我想在一个多维数组上运行一个 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;
}
这样一来,第一个元素就不会在真值测试中被真正考虑到。
关于javascript - 跳过每个()中的第一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58238611/