javascript - 为什么我的代码返回数组的最后一个值,而不是返回每个项目的结果?
问题描述
您将获得一组对象(PHP 中的关联数组),这些对象表示已注册参加您正在组织的下一次编码聚会的开发人员的数据。
您的任务是返回一个数组,其中每个对象都有一个新属性“greeting”,其字符串值如下:
嗨<这里的名字>,你最喜欢<这里的语言>的什么?
例如,给定以下输入数组:
var list1 = [ { firstName: 'Sofia', lastName: 'I.', country: 'Argentina', continent: 'Americas', age: 35, language: 'Java' }, { firstName: 'Lukas', lastName: 'X.', country: 'Croatia', continent: 'Europe', age: 35, language: 'Python' } ]
您的函数应返回以下数组:
[ { firstName: 'Sofia', lastName: 'I.', country: 'Argentina', continent: 'Americas', age: 35, language: 'Java', greeting: 'Hi Sofia, what do you like the most about Java?' }, { firstName: 'Lukas', lastName: 'X.', country: 'Croatia', continent: 'Europe', age: 35, language: 'Python', greeting: 'Hi Lukas, what do you like the most about Python?' }];
到目前为止,我有这个:
var count = 0;
for (var i = 0; i < list.length; i++){
count +=1;
list.forEach (function greet(string){
string.Greeting = "Hi " + list[i].firstName + ",what do you like most about " + list[i].language + "?";
}); // For each object in array, add string "greeting:" using function
}
console.log(list);
}
这将返回问候语,但返回数组名称和语言中的最后一个人,而不是单独返回每个人。
解决方案
正如@TKoL 所说,您错误地将 for 和 forEach 混合在一起。你只需要:
for (var i = 0; i < list.length; i++){
list[i].greeting = `Hi ${list[i].firstName}, what do you like most about ${list[i].language}?`;
}
或者
list.forEach(l => l.greeting = `Hi ${l.firstName}, what do you like most about ${l.language}?`);
推荐阅读
- javascript - 将多个 div 转换为一个
- android - Android AsyncTask 导致冻结
- java - 关于定位 Conf 的问题。file // 已经在 src 文件夹中
- php - 具有特定键值对的搜索数组
- android - android,从不同的应用程序调用服务
- java - For 循环未完全运行
- c# - 在 SQL 中使用 LINQ 保存图片路径
- excel - 如何运行 For 循环,如果单元格为真(有文本),则该行被复制到不同的 ss
- excel - 我需要一个单元格作为超链接,并且单元格中的内容是超链接的一部分
- react-native - 为什么自动完成功能不适用于 WebStorm 中的 React Native?