【发布时间】:2017-05-27 15:00:34
【问题描述】:
我尝试了 2 天,但没有运气!哈哈
我的菜鸟问题是
我有一个容器
var container = [1.29,1.30,1.20,1.21,1.95,4.19,1.53,4.11,1.06,84.64,0,23.1,1,22,1.22];
所以,我需要找到一个快速的解决方案来查看这个容器并计算值,我只需要遵守 2 条规则 如果我必须计算的值是 0,我需要确切知道容器中有多少个 0 如果该值不是 0,我需要计算所有等于或大于该值的值
所以我尝试了这两种方法,但在这两种情况下,我都得到了错误的 0 值结果。
function count(arr, value) {
if (arr.length === 1) {
return arr[0] === value ? 1 : 0;
} else {
if (value === 0) {
return (arr.shift() === value ? 1 : 0) + count(arr, value);
} else {
return (arr.shift() >= value ? 1 : 0) + count(arr, value);
}
}
}
console.log(count(container, 2));
console.log(count(container, 0));
我的期望是找到所有值 >= 的 2 和所有值 === 0 但是我得到了 2 的正确结果和 0 的错误结果
同一个函数的这 2 个变体相同
function isBigEnough(value) {
return function(element, index, array) {
if (value === 0) {
return (element = value);
} else {
return (element >= value);
}
}
}
function isBigEnough(value) {
if (value === 0) {
return function(element, index, array) {
return (element = value);
}
} else {
return function(element, index, array) {
return (element >= value);
}
}
}
每次我得到 0 值的 0 结果,但容器中有 1。
有什么想法吗? 更快速的方法是什么?
非常感谢,祝你有美好的一天。
【问题讨论】:
-
使用
shift()没有意义,除非您循环遍历数组 -
查看array.reduce。这将是辉煌的。
-
@charlietfl,问题是
shift方法像我的回答一样修改了原始数组。
标签: javascript arrays function filter