我有一个数组,它一次只有一个非零值和其他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是否提供了任何功能来执行此操作?
答案 0 :(得分:7)
您可以从数组中过滤掉它:
[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x; }).pop(); // 1234
如评论中提到的@Sarath,如果您的初始数组可能包含其他 falsy 非数字值(false
,undefined
,{{1}您可以添加严格的比较:
''
数字数组的另一个简短解决方案是使用[0,0,0,0,0,0,0,1234,0,0,0].filter(function(x) { return x !== 0; }).pop();
方法:
reduce
答案 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
);