javascript - Codewars Coding Meetup #6 - 他们可以用同一种语言编码吗?
问题描述
我开始非常基本地尝试使用 for 和 if 循环来解决这个问题,而不是任何对我自己来说太高级的东西。我正在寻求朝着正确的方向前进。
您将获得一组对象(PHP 中的关联数组),这些对象表示已注册参加您正在组织的下一次编码聚会的开发人员的数据。
您的任务是返回:
如果列表中的所有开发人员使用相同的语言代码,则为 true;否则为假。例如,给定以下输入数组:
var list1 = [ { firstName: 'Daniel', lastName: 'J.', country: 'Aruba', continent: 'Americas', age: 42, language: 'JavaScript' }, { firstName: 'Kseniya', lastName: 'T.', country: 'Belarus', continent: 'Europe', age: 22, language: 'JavaScript' }, { firstName: 'Hanna', lastName: 'L.', country: 'Hungary', continent: 'Europe', age: 65, language: 'JavaScript' }, ];
你的函数应该返回true。
我的逻辑是,如果数组中的每种语言都等于第一种语言,那么它应该返回 true,因为很明显它们都是相同的,如果不返回 false。
但是,当我运行代码时,它只返回 true 并且无法返回 false,这就是我所拥有的:
function isSameLanguage(list) {
for (var i = 0; i < list.length; i++) {
if (list[i].language === list[0].language) {
return true;
}
}
return false;
}
解决方案
用简单的语言,您的代码意味着
if (list[i].language === list[0].language) {
return true;
}
上述部分意味着如果list[i].language
(任何语言)等于第一个元素的语言list[0].language
,则返回true
。所以这不是你想要的。
如果任何一种语言list[i].language
不等于第一语言,你想要list[0].language
然后返回false
您应该将条件从===
to更改为!==
然后在循环内返回 false
var list1 = [
{ firstName: 'Daniel', lastName: 'J.', country: 'Aruba', continent: 'Americas', age: 42, language: 'JavaScript' },
{ firstName: 'Kseniya', lastName: 'T.', country: 'Belarus', continent: 'Europe', age: 22, language: 'JavaScript' },
{ firstName: 'Hanna', lastName: 'L.', country: 'Hungary', continent: 'Europe', age: 65, language: 'JavaScript' },
];
function isSameLanguage(list) {
for (var i = 1; i < list.length; i++){
if (list[i].language !== list[0].language){
return false;
}
}
return true;
}
console.log(isSameLanguage(list1))
推荐阅读
- json - 通过 XML 解析 json
- javascript - ReactJS Custom Hook 没有呈现预期的输出
- python - 高速公路:socket.gaierror:[Errno 11001] getaddrinfo 失败
- python - cv2.approxPolydp() 返回什么?
- signalr - 针对组中的特定用户
- ruby-on-rails - 从多个模型中搜索(弹性搜索)
- api - Agora 云端录制 API 查询(获取请求)响应 404
- android - 没有静态方法intArrayOf怎么解决?
- javascript - 服务工作者运行时上下文
- javascript - Javascript onclick触发两个不同的选择选项