繁体   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