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

如何将数值数组映射到对象数组的指定属性中?

解决数组值映射到对象数组属性的问题

这个需求其实很简单,既然你已经明确两个数组长度完全匹配,咱们直接利用循环的索引就能轻松把myArray里的值对应到myProducts每个对象的shipping属性上,下面给你两种常用的实现方式:

方式一:直接修改原对象数组

如果你不需要保留原myProducts的原始结构,想直接在原对象上添加shipping属性,可以用forEach循环——它的回调函数能拿到当前遍历的索引,刚好用来匹配myArray的对应位置:

var myArray = ['2', '4', '7'];
var myProducts = [
  {id: '755', price: '10'},
  {id: '756', price: '20'},
  {id: '757', price: '30'}
];

myProducts.forEach(function(obj, index) {
  // 利用索引直接对应赋值
  obj.shipping = myArray[index];
});

// 此时myProducts里的每个对象都新增了shipping属性
console.log(myProducts);

方式二:生成新的对象数组(不修改原数据)

如果想保留原myProducts不变,生成一个包含shipping属性的新数组,可以用map方法,它会返回一个全新的数组,不会影响原数据:

var myArray = ['2', '4', '7'];
var myProducts = [
  {id: '755', price: '10'},
  {id: '756', price: '20'},
  {id: '757', price: '30'}
];

var updatedProducts = myProducts.map(function(obj, index) {
  // 展开原对象的所有属性,再添加shipping属性,返回新对象
  return {
    ...obj,
    shipping: myArray[index]
  };
});

// updatedProducts是新数组,原myProducts完全不受影响
console.log(updatedProducts);

补充说明

你一开始想在forEach里嵌套Array.prototype.map其实没必要,因为map是用来遍历数组生成新数组的工具,而这里每个对象只需要对应myArray里的单个值,直接通过索引取值是最简洁高效的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:30:56