Javascript - 如何从数组中获取非零值?

Kam*_*med 1 javascript arrays jquery

我有一个数组,它一次只有一个非零值和其他0值.例如,它可能是

[0,0,0,0,0,0,0,1234,0,0,0] 
// or
[0,0,2823,0,0,0,0,0,0,0,0]
//...
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使用javascript从数组中获取此非零值.

我知道我可以迭代数组并在找到它后立即返回非零值,但我想知道javascript是否提供了任何功能来执行此操作?

Vis*_*ioN 7

您可以从数组中过滤掉它:

[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x; }).pop();  // 1234
Run Code Online (Sandbox Code Playgroud)

作为@Sarath在评论中提到的,如果你最初的阵列可以有其他的falsy非数值(如false,undefined,'',等),你可以添加一个严格的比较:

[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x !== 0; }).pop();
Run Code Online (Sandbox Code Playgroud)

数字数组的另一个简短解决方案是使用reduce方法:

[0,0,0,0,0,0,0,1234,0,0,0].reduce(function(a, b) { return a + b; }); // 1234
Run Code Online (Sandbox Code Playgroud)

注意:检查浏览器兼容性filterreduce方法,并根据需要使用polyfill.