javascript - 如何让这个函数检查 array(table1) 中的元素是否相同?它适用于数字,但不适用于字符串

标签 javascript arrays string typeof

函数检查数组中的元素是否相同

function isUniform(){
var table1 = ['a','b','a','a'];
for(var y = table1.length - 1; y>=0; y--){
    if( (typeof table1 === 'string' && table1[y] !== table1[y - 1]) || (typeof table1 !== 'string' && table1[y] !== table1[y - 1] && table1[y - 1] >0) ){
        return false;
    }
}
return true;}

它应该返回 false

编辑:感谢大家的帮助!

最佳答案

您正在检查索引y-1处的元素是否大于0。您应该检查索引而不是该索引处的元素。

function isUniform(table1){
  for(var y = table1.length - 1; y>=0; y--){
    if( (typeof table1 === 'string' && table1[y] !== table1[y -   1]) || (typeof table1 !== 'string' && table1[y] !== table1[y  - 1] && y - 1 > 0) ){
        return false;
    }
  }
return true;
}
console.log(isUniform(['a','b','a','a']))

使用Set()

更简单的方法是使用 Set()

const allEqual = arr => new Set(arr).size === 1 
console.log(allEqual(['a','b','a','a']))

使用every()

您还可以使用 every() 并将每个元素与第一个元素进行比较。

const allEqual = arr => arr.every(x => arr[0] === x);
console.log(allEqual(['a','b','a','a']))

注意:这样的函数通常采用一个参数,然后根据该输入返回。您不应该声明一个本地数组,然后只对其进行测试。

其次,我无法理解 typeof table1 === 'string' 的原因。如果您能解释一下功能的其他要求是什么,您将得到更好的解决方案。

关于javascript - 如何让这个函数检查 array(table1) 中的元素是否相同?它适用于数字,但不适用于字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55708365/

相关文章:

javascript - 使用连字符引用对象的属性名称

javascript - Express、AJAX - res.send 不发送任何数据

java - 在 json 数组中添加 json 对象,并在 sqlite 的 json 对象中添加 agian json 数组

java - 修改/设置从访问器方法返回的字符串

javascript 函数在 Firefox 中不起作用

JavaScript 过滤器在 IE9 及更低版本中不起作用

C - 将信息传输到结构(特别是字符串数组)

javascript - 将一系列 JSON 数据从 php 回显到 JavaScript,

java - 在 String 方法中返回时间(int)

string - 在 R 中使用字符串名称分配 data.frame 的列