javascript - 计算有多少数组在数组中的第 n 位有值
问题描述
我有一个 javascript 数组:
var array = [['a','b','success'],['d','e','success'],['d','e','success']]
找出这个数组中有多少个数组成功作为第三个值的最佳方法是什么?
我已经尝试过的:
var counter = 0
for (var g = 0; g < array.length; ++g){
row = array[g]
if(row[2] === "success") {
counter = counter + 1
}
}
我正在尝试让我的 Apps 脚本运行得更快。
解决方案
Array.prototype.filter
可以是一个高效而优雅的解决方案
var array = [['a','b','success'],['d','e','success'],['d','e','success']];
var n = array.filter((el) => el[2] === "success").length;
console.log(n);
在@Harun Yilmaz 回答后编辑
如果您正在寻找速度,则越简单-> 越好,因为高阶函数会引入少量开销,这在少量可以忽略不计,在更大的数组中变得越来越重。
这个解决方案是我能想到的最快的解决方案,因为从计算中删除了所有不必要的部分(比原来的快一倍):
var counter = 0;
var l = data.length;
for (var g = 0; g < l; ++g){
if(data[g][2] === "success") {
counter++;
}
}
推荐阅读
- python - 如何为误差线上限分配颜色?[Matplotlib]
- postgresql - 如何从存储过程(不是函数)返回值?
- matplotlib - 为什么我的 matplotlib 图只显示为 png 而不是 Matlab 数字?
- cmd - Windows 中的“sudo su”等价物
- javascript - JavaScript 抛出读取属性“提交”错误
- python - 在 Python 中编写 .format() 方法的正确方法是什么
- python - 在heroku上从rails调用python脚本进行多种操作是个好主意吗?
- node.js - 在我的 Nodejs+React+Mongo 应用程序中实现日志记录;如何确保它的可扩展性?
- c++ - Azure Devops 测试管道 LNK1107 在 MSVC 上打开 vulkan-1.lib 但在 GCC 上工作正常
- java - 当所有 JAVA 线程都是使用 OS 库创建的 Native 线程时,为什么要引入 Fork/Join 框架?