如何为数组中每个对象的username字段添加感叹号
问题原因
你得到['[object Object]!']是因为forEach回调里的参数是数组中的整个对象,不是username属性。当你把对象和字符串'!'拼接时,JavaScript会把对象转换成默认的字符串表示[object Object],所以最终得到了错误的结果。
修正后的代码
方式一:修正forEach的写法
把回调参数改为代表数组元素的对象(比如命名为user),然后访问它的username属性再拼接'!':
const array = [ { username: "john", team: "red", score: 5, items: ["ball", "book", "pen"] }, { username: "becky", team: "blue", score: 10, items: ["tape", "backpack", "pen"] }, { username: "susy", team: "red", score: 55, items: ["ball", "eraser", "pen"] }, { username: "tyson", team: "green", score: 1, items: ["book", "pen"] }, ]; const players = []; array.forEach((user) => { players.push(user.username + '!'); }); console.log(players); // 输出: ["john!", "becky!", "susy!", "tyson!"]
方式二:用map更高效(推荐)
如果是要从原数组生成新数组,map方法比forEach更合适,它会直接返回处理后的新数组,不需要额外声明空数组:
const array = [ { username: "john", team: "red", score: 5, items: ["ball", "book", "pen"] }, { username: "becky", team: "blue", score: 10, items: ["tape", "backpack", "pen"] }, { username: "susy", team: "red", score: 55, items: ["ball", "eraser", "pen"] }, { username: "tyson", team: "green", score: 1, items: ["book", "pen"] }, ]; const players = array.map(user => user.username + '!'); console.log(players); // 输出: ["john!", "becky!", "susy!", "tyson!"]
内容的提问来源于stack exchange,提问作者Mike Case
相关产品推荐
相关产品推荐

