为什么这种减少不会返回-2?

时间:2017-08-16 19:58:17

标签: javascript math reduce

我正在尝试从JavaScript数组中的序列返回最低的负数,或者在没有的情况下返回-1。这是我的代码:

console.log([1,2,3,-2,4].reduce((a,b) => {return b<0?(b<a?b:a):-1}))

为什么这会返回-1而不是-2?不会-2检查前一个-1值并返回?

任何线索都可能会受到赞赏。

谢谢,

4 个答案:

答案 0 :(得分:3)

如果元素小于给定的初始值,则可以返回检查结果。

console.log([1, 2, 3, -2, 4].reduce((a, b) => a < b ? a : b, -1));

答案 1 :(得分:2)

您只需在reduce

内打印即可查看

&#13;
&#13;
console.log([1,2,3,-2,4].reduce((a,b) => {
    console.log(a, b, a<0?(b<a?b:a):-1);
    return a<0?(b<a?b:a):-1
}))
&#13;
&#13;
&#13;

当a = -2且b = 4时,你的语句返回-1,因为b&gt; 0,你可以用

解决这个问题

&#13;
&#13;
$scope.data = [
    {'name': 'ibrahim'},
    {'name': 'nizam'},
    {'name': 'shahid'},
    {'name': 'shahrukh'}
];

for (i = 0; i <= $scope.data.length; i++) {
    if(param == $scope.data[i].name)
       $scope.myname = $scope.data[i].name;
}
&#13;
&#13;
&#13;

答案 2 :(得分:1)

你可以将数组减少到最小数,然后根据它返回值,如下所示:

&#13;
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
&#13;
&#13;

您也可以使用var arr = [1,2,3,-2,4].reduce((a,b) => {return b<a?b:a}); if(arr[0] < 0) console.log(arr[0]); else console.log(-1);对数组进行排序,然后检查arr [0]并根据该值返回值。

答案 3 :(得分:0)

你忘了给出初始值,它应该是这样的:

[1,2,3,-2,4].reduce((a,b) => b<0 ? (b<a?b:a) : a, -1)