Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Codewars编码会议#6-他们能用同一种语言编码吗?_Javascript - Fatal编程技术网

Javascript Codewars编码会议#6-他们能用同一种语言编码吗?

Javascript Codewars编码会议#6-他们能用同一种语言编码吗?,javascript,Javascript,我开始非常基本地尝试使用for和if循环来实现这一点,而不是任何对我来说太高级的东西。我正在寻求朝着正确的方向推进 您将获得一个对象数组(PHP中的关联数组) 代表已注册参加会议的开发人员的数据 您正在组织的下一次编码会议 您的任务是返回: 如果列表中的所有开发人员使用相同的语言编写代码,则为true;还是假的 否则。例如,给定以下输入数组: var list1 = [ { firstName: 'Daniel', lastName: 'J.', country: 'Aruba', cont

我开始非常基本地尝试使用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;
}
函数isSameLanguage(列表){
对于(变量i=0;i
在简单的语言中,代码的意思是

if (list[i].language === list[0].language) {
  return true;
}
上述部分表示,如果
list[i]。language
(任何语言)等于第一个元素的language
list[0]。language
则返回
true
。所以这不是你想要的

如果语言<代码>列表[i]。语言<代码>不等于第一语言<代码>列表[0]。语言<代码>则返回<代码>false

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

var列表1=[
{名字:“丹尼尔”,姓氏:“J.”,国家:“阿鲁巴”,大陆:“美洲”,年龄:42岁,语言:“JavaScript”},
{名字:'Kseniya',姓氏:'T',国家:'白俄罗斯',大陆:'Europe',年龄:22岁,语言:'JavaScript'},
{名字:“汉娜”,姓氏:“L.”,国家:“匈牙利”,大陆:“欧洲”,年龄:65岁,语言:“JavaScript”},
];
函数isSameLanguage(列表){
对于(变量i=1;iconsole.log(isSameLanguage(list1))
您的逻辑的问题是,一旦找到与第一项类似的语言,它将返回
true
。此外,您从第一项开始迭代,这与它本身相同

一个更简单的选择是使用
Array.every()
,并检查所有项目与第一个项目。如果其中任何一个没有匹配的语言,函数将返回
false

const list1=[
{名字:“丹尼尔”,姓氏:“J.”,国家:“阿鲁巴”,大陆:“美洲”,年龄:42岁,语言:“JavaScript”},
{名字:'Kseniya',姓氏:'T',国家:'白俄罗斯',大陆:'Europe',年龄:22岁,语言:'JavaScript'},
{名字:“汉娜”,姓氏:“L.”,国家:“匈牙利”,大陆:“欧洲”,年龄:65岁,语言:“JavaScript”},
];
函数isSameLanguage([start,…rest]){
返回rest.every(o=>o.language==start.language);
}

console.log(isSameLanguage(list1))
第一次通过
i
时为0,因此它将返回true并退出函数…啊!非常感谢。谢谢你Maheer成功了,我觉得很可笑!我能解释一下为什么这样做有效吗?“我真的不明白为什么这会造成不同?”CocoFlade补充道。如果你需要更多,我会在这里等你。我真的很感激人们询问代码的原因。你已经添加了一个完美的解释,我真是感激不尽!谢谢,我今天早些时候看过Array.every(),但是你编写代码的方式让我大吃一惊,所以我不得不退一步。但再次感谢你抽出时间来帮助我。