簡體   English   中英

三元條件一次有效,但不能再一次 javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM