我遇到了将对象复制到数组的问题。我认为这是一个参考问题。
在我的程序中我有几个数组。首先是dataForMonth - 它是包含月份数据的对象数组。第二个是包含产品对象的产品数组。产品有属性forecastArry wchich是对象数组。
这里代码:
this.allProducts.map(function (product) {
var dataForMonth = data.filter(function (e) {
return e.dataId === product.productDataId;
});
var z = { posId: product.sales_plan_pos_id, arry: [] }
for (var sheetMonth of sheet.channels) {
var result = dataForMonth.filter(function (e) {
return e.CHANNEL === sheetMonth.CHANNEL;
});
product.forecastArry[someId].channels = result;
);
问题是每个更改的频道属性都具有相同的值 - 它是上一个产品的值? 有谁知道如何解决它?
答案 0 :(得分:0)
好像你想编辑product
中的每个this.allProducts
。因此,您希望向地图添加返回值。您还应该使用let
,以便声明的变量范围保留在map函数中,尽管我相信map
函数已经处理了这个问题。此外,并非您必须将this.allProducts重新分配给您的地图函数调用。所以你的答案应该如下:
this.allProducts = this.allProducts.map(function (product) {
let dataForMonth = data.filter(function (e) {
return e.dataId === product.productDataId;
});
let channelsForMont = [];
let z = { posId: product.sales_plan_pos_id, arry: [] }
for (let sheetMonth of sheet.channels) {
let result = dataForMonth.filter(function (e) {
return e.CHANNEL === sheetMonth.CHANNEL;
});
product.forecastArry[someId].channels = channelsForMont;
return product;
);

P.S您的原始代码有一些缺失括号,result
变量未使用。你应该对他们采取一些措施。