[英]Ternary conditional works one time but not another javascript
首先,這對我不起作用,我解釋一下,這樣他們就不會解決問題,我正在制作兩個或多或少相等的三元條件算法,一個是對象數組,另一個是數字數組,並且對於數字我沒有那個問題,這就是為什么我認為代碼有問題: 何時應該在 ES6 箭頭函數中使用 return 語句
我是 javascript 世界的新手,在對數組進行歸約時,我想嘗試計算屬性為年齡的對象數組中年齡相等的次數。
但是,當我執行三元條件時,我收到 output 未定義。
但是當用一個正常的 if 做一個 else if 你可以做計數時: Code: const numbers = [ {age: 4, age2: 4}, {age: 5, age2: 6}, {age: 88, age2: 99 },{年齡:14,年齡2:14},{年齡:2,年齡2:2}];
const getCount = ( objects ) => objects.reduce((acc, el) => {
if ( el.age === el.age2 ) {
return acc += 1;
}
else {
return acc;
}
}, 0);
const b = getCount(numbers)
console.log(b)
Output:
3
但是使用此代碼:
const numbers = [ {age: 4, age2: 4}, {age: 5, age2: 6}, {age: 88, age2: 99}, {age:14, age2:14}, {age: 2, age2: 2} ];
const getCount = ( objects ) => objects.reduce((acc, el) => {
el.age === el.age2 ? acc += 1 : acc;
}, 0);
const b = getCount(numbers)
console.log(b)
Output
undefined
但是,如果我不使用對象並且僅在某些元素重復時才進行計數,並且使用相同的三元條件,這確實有效。
const count2 = ( objects ) => objects.reduce( (acc, el) => el === 1 ? acc += 1 : acc )
console.log(count2( [0, 1, 2, 3, 4, 5, 1, 1, 4] ))
Output
3
請我不明白會發生什么,錯誤是什么
您忘記返回累加器值:
const getCount = ( objects ) => objects.reduce((acc, el) => {
return el.age === el.age2 ? acc += 1 : acc;
}, 0);
您還可以刪除{ }
和 keywork return
const getCount = ( objects ) => objects.reduce((acc, el) => el.age === el.age2 ? acc += 1 : acc, 0)
除了缺少的return
語句和使用塊語句之外,您可以簡化 function 並只需添加累加器和比較值。
const getCount = objects => objects.reduce((acc, el) => acc + (el.age === el.age2), 0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.