gpt4 book ai didi

javascript - 访问数组内部的对象数据

转载 作者:行者123 更新时间:2023-11-28 12:12:50 26 4
gpt4 key购买 nike

我必须返回来自欧洲的 JavaScript 开发人员的数量。我有一个包含 4 个对象的数组。 (姓名、国家/地区和语言等)

//供引用并澄清问题

var list1 = [
{ firstName: 'Noah', lastName: 'M.', country: 'Switzerland',
continent: 'Europe', age: 19, language: 'JavaScript' },
{ firstName: 'Maia', lastName: 'S.', country: 'Tahiti', continent:
'Oceania', age: 28, language: 'JavaScript' },
{ firstName: 'Shufen', lastName: 'L.', country: 'Taiwan',
continent: 'Asia', age: 35, language: 'HTML' },
{ firstName: 'Sumayah', lastName: 'M.', country: 'Tajikistan',
continent: 'Asia', age: 30, language: 'CSS' }
];

//我的代码如下

function countDevelopers(list) {

let euro = 0;

for( let coder = 0; coder < list.length; coder++ ){
list[coder]["continent"];
if( list[coder]["continent"] == 'Europe' ){
for (let lang = 0; lang < list[coder].length; lang++ ){
list[lang]["language"];
if( list[coder][lang]["language"] == 'Javascript'){
euro++;
}
}
}
}

return euro;

}

最佳答案

让我们看看您的代码当前正在做什么:

function countDevelopers(list) {

let euro = 0;
for( let coder = 0; coder < list.length; coder++ ){

它循环遍历所有编码器的整个列表。

list[coder]["continent"];

这一行绝对没有做任何事情;您可以将其删除。

if( list[coder]["continent"] == 'Europe' ){
for (let lang = 0; lang < list[coder].length; lang++ ){

如果当前编码器来自欧洲,您将再次循环所有编码器 - 等等。您认为这正确吗?您只需要知道这个编码器是否使用 JavaScript,您无需费心查看所有其他编码器。它们对于这个编码员来说并不重要。

list[lang]["language"];

另一行不执行任何操作,可以删除。

if( list[coder][lang]["language"] == 'Javascript'){

什么是list[coder][lang]? coder 和 lang 都是从头到尾对数组索引进行计数的变量。假设您在第二个编码器(索引 1)和第一个 lang 编码器(索引 0)上,那么这就要求 list[1][0].language 。但列表中的每个元素都是一个对象,而不是数组,因此没有索引 0。这一行没有任何意义。

编码的最后一部分,增加欧元,很好。

所以你真正需要的只是一个循环:

for (let coder = 0; coder < list.length; coder++) {
if (list[coder].continent === 'Europe' && list[coder].language === 'JavaScript') {
euro++;
}
}

(如果您想变得更奇特,您可以使用 Array.reduce 操作使其更加简洁:

let euro = list.reduce((total, coder) => total + (coder.continent === 'Europe' && coder.language === 'JavaScript') ? 1 : 0, 0);

)

关于javascript - 访问数组内部的对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com