如何防止在循环时重写数组中的数据



我喜欢的是像这样的数组

myArray = [
  [{"value":1},{"value":2},{"value":3}]
  [{"value":2},{"value":4},{"value":6}]
]

我试着用两个循环来构建它。外循环喊构建数组中的两个"外部"元素,内循环喊构建3个内部对象。

http://jsfiddle.net/xtrem1234/xx06zt5s/

var dataset = [];
var categories = ["Category_1", "Category_2"];
var myArray = [];
categories.forEach(function (category, index) { 
            
    for (var n = 1; n < 4; n++) {
        var d;
        d = {};
        d.value = (index+1) * n;
        console.log("index: " + index);
        console.log("n: " + n);
        console.log("d.value: " + d.value);
        dataset[n] = d; 
                
    }
    myArray.push(dataset);
					
});
console.log(JSON.stringify(myArray));

问题是,您的数组dataset是全局数组。在forEach循环中定义它。

代码

var categories = ["Category_1", "Category_2"];
var myArray = [];
categories.forEach(function(category, index) {
  var dataset = [];
  for (var n = 1; n < 4; n++) {
    var d;
    d = {};
    d.value = (index + 1) * n;
    dataset[n] = d;
  }
  myArray.push(dataset);
});
console.log(JSON.stringify(myArray));

A:每次forEach循环运行时,都需要重新初始化数据集数组

B: 您可以将信息推送到数据集数组中,与myArray 相同

var categories = ["Category_1", "Category_2"];
var myArray = [];
categories.forEach(function (category, index) { 
  var dataset = [];
  for (var n = 1; n < 4; n++) {
    dataset.push({'value': (index+1) * n});
  }
  myArray.push(dataset);            
});
console.log(JSON.stringify(myArray));

最新更新