场景:
如果给定Array1,例如[1, 2, 3]
和Array2 [2,4]
,则我的输出必须为[2, 3]
,因为Array1中有2个元素小于或等于Array2 [1]。和Array1
中的3个小于或等于Array2[2]
的元素。
到目前为止,我已经知道了...
function counts(nums, maxes) {
let empArr = [];
//compare SECOND ARRAY maxes
for (let i = 0, count = 0; i < maxes.length; i++) {
//to FIRST ARRAY nums
for (let j = 0; j < nums.length; j++) {
if (nums[j] <= maxes[i]) {
count++;
}
}
empArr.push(count);
}
return empArr
}
console.log(counts([1, 2, 3], [2, 3]));
这给了我[2, 5]
,但我希望[2, 3]
。这里有什么帮助吗?谢谢!
答案 0 :(得分:2)
count = 0;
中的for()
声明并没有按照您认为的做。 for
构造函数中这种性质的声明仅在循环的第一次迭代之前运行一次。在循环顶部手动重置count
:
function counts(nums, maxes) {
let empArr = [];
//compare SECOND ARRAY maxes
for (let i = 0; i < maxes.length; i++) {
let count = 0;
//to FIRST ARRAY nums
for (let j = 0; j < nums.length; j++) {
if (nums[j] <= maxes[i]) {
count++;
}
}
empArr.push(count);
}
return empArr
}
console.log(counts([1, 2, 3], [2, 3]));