首页 > 解决方案 > 计算有多少数组在数组中的第 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 脚本运行得更快。

标签: javascript

解决方案


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++;
  }
}

性能测试:


推荐阅读