javascript - 如何让这个函数检查数组(table1)中的元素是否相同?它适用于数字但不适用于字符串
问题描述
函数正在检查数组中的元素是否相同
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'
. 如果您能解释功能的其他要求是什么,您将获得更好的解决方案。
推荐阅读
- python - 未能在定义的函数中为变量赋值
- java - 骆驼码头端点接受没有证书的客户端消息
- .net-core - 带有 MSAL 登录的 Microsoft Teams 选项卡
- nginx - 如何在地图中使用 nginx 正则表达式来提取 json 中键的值
- r - 将数据框字符串列拆分为多列而不使用模式
- javascript - 将嵌套数组转换为 HTML 结构
- python - 创建一个函数来获取 s 形曲线的值
- android - Android 画中画模式
- odoo-13 - odoo13 错误创建新产品公共类别(电子商务)
- azure-devops - 在 Azure DevOps Services 管道中安装 Terraform 时出现自签名证书错误