You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将颜色数组映射赋值给已有对象数组中的每个对象?

解决数组对象对应分配颜色的问题

嘿,这个问题其实不用搞复杂的嵌套遍历啦!你要的是两个数组一一对应分配值,直接利用索引匹配就搞定了,我给你两种常用的实现方式:

首先先明确你的原始数据:

let arr = { people:[{name: 'Zero'},{name: 'Jeans'},{name: 'Duct'}] };
let colors = { color: ['#fff', '#fa0', '#eee'] };

方法一:直接修改原对象(forEach遍历)

这种方式会直接给arr.people里的每个对象添加color属性,操作简单直接:

arr.people.forEach((person, index) => {
  // 取同索引的颜色值,转成大写后赋值给person的color属性
  person.color = colors.color[index].toUpperCase();
});

方法二:生成新对象数组(map遍历)

如果你不想修改原对象,而是生成一个新的数组,就用map方法:

arr.people = arr.people.map((person, index) => {
  // 解构原person对象,添加color属性后返回新对象
  return {
    ...person,
    color: colors.color[index].toUpperCase()
  };
});

为啥嵌套遍历不行?

你之前尝试的嵌套遍历,会把每个person都和所有颜色配对一遍,最后每个person的color只会被最后一个颜色覆盖,完全不是你要的一一对应效果。而上面两种方法都是通过索引位置匹配,保证第N个person对应第N个颜色,完美符合你的需求~

执行完上面任意一种代码后,arr就会变成你想要的目标结构啦!

内容的提问来源于stack exchange,提问作者Shawn Sheehan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:30:20