Codewars Coding Meetup #6 - 他们可以用同一种语言编码吗?

Coc*_*ade 2 javascript

我开始尝试使用 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' },
];
Run Code Online (Sandbox Code Playgroud)

你的函数应该返回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;
}
Run Code Online (Sandbox Code Playgroud)

Mah*_*Ali 5

用简单的语言,你的代码意味着

if (list[i].language === list[0].language) {
  return true;
}
Run Code Online (Sandbox Code Playgroud)

上面的部分意味着如果list[i].language(任何语言)等于第一个元素的语言,list[0].language 则 return true。所以这不是你想要的。

如果任何一种语言list[i].language不等于第一语言,list[0].language则返回false

您应该将条件从===to更改为!==然后在循环内返回 false

if (list[i].language === list[0].language) {
  return true;
}
Run Code Online (Sandbox Code Playgroud)

  • @CocoFlade我添加了一种解释。如果您需要更多,我随时为您服务。我真的很感激人们询问代码的原因。 (2认同)