2017-05-12 12 views
0

オブジェクトを配列にコピーする際に問題があります。私はそれが参考に問題だと思う。配列から参照なしでオブジェクトをコピーする

私のプログラムでは配列がほとんどありません。最初はdataForMonthです。これは月のデータを持つオブジェクトの配列です。 2番目は商品オブジェクトを含む商品配列です。プロダクトはプロパティーを持っています.Array 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

http://stackoverflow.com/questions/28150967/typescript-cloning-objectのdupのような音 –

+0

なぜマップの返り値は何も返されないのですか? –

答えて

0

productthis.allProductsに編集しているようです。そのため、マップに戻り値を追加する必要があります。また、map関数がすでにそれを処理しているとは思うが、宣言された変数のスコープがマップ関数内に保持されるように、letも使用する必要があります。さらに、this.allProductsをマップ関数呼び出しに再割り当てする必要はありません。あなたの元のコードは、いくつかの不足しているブラケットを持っており、result変数が未使用である

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:だからあなたの答えは、次のようなものでなければなりません。あなたはそれらについて何かをするべきです。

+0

まだ同じ:/ –

関連する問題