我寫了一個代碼,但我遇到了一些奇怪的事情。
function countPositivesSumNegatives(input) {
let count = 0;
let positive = 0;
let negative = 0;
for (let i = 0; i < input.length; i ) {
if (input[i] < 0) {
negative = input[i];
}
if (input[i] > 0) {
count ;
positive = count;
}
if (input == 0) {
return [];
}
}
return [positive, negative];
}
console.log(countPositivesSumNegatives([0, 0]));
為什么輸出是 [0, 0] 而不是 [] ?我正在嘗試獲取空陣列 []
輸出必須是:
countPositivesSumNegatives([1, 2, 3, -1, -3]) -> [3, -4]
countPositivesSumNegatives([0, 0]) -> []
uj5u.com熱心網友回復:
(更新)
由于該函式[]僅在所有元素都是 時才應回傳== 0,因此您可以在回圈結束時檢查 ifpositive和negativeare == 0,這意味著沒有計算任何正數并且沒有求和任何負數:
function countPositivesSumNegatives(input) {
let count = 0;
let positive = 0;
let negative = 0;
for (let i = 0; i < input.length; i ) {
if (input[i] < 0) {
negative = input[i];
}
if (input[i] > 0) {
count ;
positive = count;
}
}
if (positive === 0 && negative === 0) {
return [];
}
else {
return [positive, negative];
}
}
console.log(countPositivesSumNegatives([0, 0]));
uj5u.com熱心網友回復:
您回傳的唯一時間[]是條件(input[i] == 0)與任何元素匹配時。
但是,給定函式的名稱,您只想跳過這些元素。
當且僅當引數不包含其他元素但0時,回傳空陣列。
因此,以下修改后的代碼將起作用:
function countPositivesSumNegatives(input) {
let count = 0;
let positive = 0;
let negative = 0;
for (let i = 0; i < input.length; i ) {
if (input[i] < 0) {
negative = input[i];
}
if (input[i] > 0) {
count ;
}
}
positive = count; // Hoisted out of the loop. Unless your function contains more code, you do not need the 'count' variable at all.
let seen_nonzero = ((positive !== 0) || (negative !== 0));
// Flags whether a non-0 element is present in your input.
let a_r =
seen_nonzero
? [positive, negative]
: []
;
return a_r
}
console.log(countPositivesSumNegatives([0, 0]));
console.log(countPositivesSumNegatives([1, 2, 3, -1, -3]));
console.log(countPositivesSumNegatives([-1, -2, 0, 1, 2]));
uj5u.com熱心網友回復:
在 for 回圈中回傳一個值只會終止回圈。因此,您將回傳實體化的正值和負值。如果你只是放一個像這樣的標志let allZeros = false并像這樣回傳:
if(allZeros) return []
return [positive,negative]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/466587.html
標籤:javascript
