评估数组的均匀性

时间:2016-03-25 18:19:12

标签: javascript arrays foreach boolean

我正在尝试评估数组的均匀性。即var num = [1,1,1,1,1,] // true或var num = [1,1,2,1,1] = // false。它也可以是一个字符串数组。我想要做的是评估整个数组并返回单个“true”或“false”。到目前为止,我的代码评估数组中的每个项目并返回每个项目的结果。我很擅长编码和在线上课,在没有作弊的情况下解决问题!

var num = [1,1,3,1,1];
var first = num[0];

num.forEach(function (num, i) {
  if(first === num){
  console.log(true);
} else {
  console.log(false);
}
});

3 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。不是为每个答案记录truefalse,而是创建一个变量来存储整体答案,然后在您完成后打印出来。像这样:

var num = [1,1,3,1,1];
var first = num[0];
var ans = true;

num.forEach(function (n) {
  if(first !== n){
     ans = false;
  } 
});
console.log(ans);

答案 1 :(得分:1)

使用.some()

var num = [1,1,3,1,1];

var notUni = num.some(function(val, idx, arr){
  return val != arr[0];  // (If arr[0] (1) is the base you're interested in)
});  

console.log( notUni ); // true

P.S:some会在找到(true)不匹配后立即退出。

答案 2 :(得分:0)

使用Array.prototype.every()功能

var num = [1, 1, 3, 1, 1];

var result = num.every(n => n == num[0]);
  

every()方法测试数组中的所有元素是否都通过了由提供的函数实现的测试。

var num = [1, 1, 1, 1, 1];

var result = num.every(n => n == num[0]);

document.write(result);