当前位置:  开发笔记 > 编程语言 > 正文

检查所有数组值是否与reduce()相同

如何解决《检查所有数组值是否与reduce()相同》经验,为你挑选了1个好方法。

我需要比较一个数组中的所有值,以了解它们是否全部相等.所以这很好,并给我预期的输出

var myArray1 = [50, 50, 50, 50, 50];  // all values are same, should return true
var myArray2 = [50, 50, 50, 50, 51];  // last value differs, should return false

function compare(array) {
    var isSame = true;
    for(var i=0; i < array.length; i++) {
       isSame = array[0] === array[i] ? true : false;
    }
    return isSame;
}

console.log('compare 1:', compare(myArray1)); // true 
console.log('compare 2:', compare(myArray2)); // false

然后我尝试使用reduce(),但看起来我误解了这个功能.他们都说这是假的.我做错了什么吗?我可以用它reduce()来得到我需要的东西吗?如果是这样的话?

var myArray1 = [50, 50, 50, 50, 50];
var myArray2 = [50, 50, 50, 50, 51];

console.log('reduce 1:', myArray1.reduce(
  function(a, b){
    return a === b ? true : false
  }
));

console.log('reduce 2:', myArray2.reduce(
  function(a, b){
    return a === b ? true : false
  }
));



1> T.J. Crowder..:

reduce这里不是正确的工具,从一次迭代返回的值用于a下一次迭代,并且reduce不会短路.

如果你想使用其中一个数组方法来做这个,那every将是一个合理的选择:

var myArray1 = [50, 50, 50, 50, 50];
var myArray2 = [50, 50, 50, 50, 51];

console.log('some 1:', myArray1.every(
  function(value, _, array){
    return array[0] === value;
  }
));

console.log('some 2:', myArray2.every(
  function(value, _, array){
    return array[0] === value;
  }
));
推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有