生成js对象名称并为其添加值

时间:2017-05-30 17:30:53

标签: javascript arrays algorithm loops for-loop

我生成两个随机数组,我需要将数字添加到数组中,我需要填充100个对象,从n1 to n100命名并使它们看起来像这样:

n1...n100 = {r: realArray[0...100], i: imagArray[0...100])}

当然,我可以添加它们,就像我们做的时候一样:

var realArray = [],
    imagArray = [];

for (var i=0, t=100; i<t; i++) {
    realArray.push(Math.floor(Math.random() * t) - 50);
    imagArray.push(Math.floor(Math.random() * t) - 50);
}

  var pointsValues = [
  n1 = {r: realArray[0], i: imagArray[0]},
  n2 = {r: realArray[1], i: imagArray[1]},
  n3 = {r: realArray[2], i: imagArray[2]},
  n4 = {r: realArray[3], i: imagArray[3]},
  n5 = {r: realArray[4], i: imagArray[4]},
  n6 = {r: realArray[5], i: imagArray[5]},
  n7 = {r: realArray[6], i: imagArray[6]},
  n8 = {r: realArray[7], i: imagArray[7]},
  n9 = {r: realArray[8], i: imagArray[8]},
  n10 = {r: realArray[9], i: imagArray[9]},
  n11 = {r: realArray[10], i: imagArray[10]},
  n12 = {r: realArray[11], i: imagArray[11]},
  //........................................,
  //........................................,
  //........................................,
  n100 = {r: realArray[100], i: imagArray[100]},
    ];

我知道必须有一个方法来循环,但我无法弄清楚如何做到这一点,从n1 to n100更改名称的想法让我感到困惑。

2 个答案:

答案 0 :(得分:0)

您可以使用 pointValues 作为对象,因此您可以在for循环上执行插入操作,如下所示:

var pointsValues = {}

for(var j = 0; j<100; j++){
    var index = "n"+(j+1);
    pointsValues[index] = {r: realArray[j], i: imagArray[j]};
}

因此您可以使用 pointsValues.n1 pointsValues [&#39; n1&#39;] 访问这些值,并使用foreach迭代!

答案 1 :(得分:0)

您正在使用var pointsValues = [ ... n1 = {r: realArray[0], i: imagArray[0]},创建一个名为n1的全局变量(至少,如果您没有处于严格模式)。我认为你需要的是一个简单的对象,因为数组索引只能是数字,而对象键通常是字符串。您可以使用已知的括号表示法(foo['n1'])来访问对象的索引。因此,可能的解决方案如下:

var realArray = [],
    imagArray = [];

for (var i=0, t=100; i<t; i++) {
    realArray.push(Math.floor(Math.random() * t) - 50);
    imagArray.push(Math.floor(Math.random() * t) - 50);
}

var result = {};

var len = realArray.length;

for (var i = 0; i < len; i++) {
  result['n' + (i + 1)] = {
    r: realArray[i],
    i: imagArray[i],
  };
}

console.log(result);
console.log(result['n50']);

当然,还有其他解决方案可能更适合,但这取决于确切的用例。