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

时间:2013-12-23 13:52:08

标签: javascript jquery arrays

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

[0,0,0,0,0,0,0,1234,0,0,0] 
// or
[0,0,2823,0,0,0,0,0,0,0,0]
//...

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

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

2 个答案:

答案 0 :(得分:7)

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

[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x; }).pop();  // 1234

如评论中提到的@Sarath,如果您的初始数组可能包含其他 falsy 非数字值(falseundefined,{{1}您可以添加严格的比较:

''

数字数组的另一个简短解决方案是使用[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x !== 0; }).pop(); 方法:

reduce

N.B。:检查filterreduce方法的浏览器兼容性,并根据需要使用polyfills。

答案 1 :(得分:1)

考虑到你问题的限制,我想我会提供另一种解决方案:

var foo = [0,0,0,0,0,0,0,1234,0,0,0],
    bar = [0,0,2823,0,0,0,0,0,0,0,0];

console.log(
    Math.max.apply(null, foo), // 1234
    Math.max.apply(null, bar)  // 2823
);