计算稀疏索引元素的javascript数组

时间:2018-03-20 09:19:25

标签: javascript arrays

在JavaScript中,我有一个数组anArray,可能有以下几种状态:

  • 数组可能为空[]
  • 数组可能只包含一个值[2]
  • 数组可能包含多个值但不包含在有序索引[2, empty, 5, empty, empty, 10]中(从chrome的控制台获取)

我想计算该数组中元素的确切数量,所以:

  • []应该给我0
  • [2]应该给我1
  • [2, empty, 5, empty, empty, 10]应该给我3

我怎样才能做到这一点?

我已经尝试过,比如数组的状态是[2, empty, 5, empty, empty, 10]

  • 访问anArray[1]给了我错误"ReferenceError: element is not defined",因为我认为1的索引甚至不存在。
  • 确实将eaach元素与nullundefined进行了比较,但与之前一样,访问anArray[1]之类的空元素会在评估之前抛出错误/警告
  • 使用了像in这样的1 in anArray,但即使元素为空,它每次也都是真的。

提前致谢。

修改 让我直接从Chrome控制台上安装我的快照 Please look me

2 个答案:

答案 0 :(得分:2)

anArray.reduce(c => c + 1,0)

由于每个数组方法都跳过未设置的数组位置,这将计算稀疏数组的所有元素

答案 1 :(得分:0)

const arr = [2, , 5, , , 10]
const n = arr.filter(x => x).length
console.log(n)