为什么要用键值填充 javascript 数组

Why is javascript array being populate with key values

我有一个空数组,我想用从循环中获得的值填充它,例如:

var testArray = [];
var data = [
    {values:[3,4,3,4]},
    {values:[3434]},
    {values:[3,43,4]}
];

for ( i = 0; i < data.length; i++ ) {
    amounts = data[i].values.length;
    console.log(amounts);
    testArray.push(amounts);
}
console.log(testArray);

当我 console.log() 'amounts' 变量时,我得到一个包含所有整数的列表,但是如果我 console.log() 'testArray' 变量,我得到一个数组键值,例如 testArray = [ 0:126, etc ].

为什么我的数组中不仅仅填充了金额?

这是因为您将每个 valueslength 存储到 amounts 中,然后将 amounts 推入 testArray 中,所以结果将是是一个长度数组而不是值。如果您尝试直接推动 values,您最终会得到一个二维数组,您应该做的是像这样使用 concat

var testArray = [];
var data = [
    {values:[3,4,3,4]},
    {values:[3434]},
    {values:[3,43,4]}
];

for ( i = 0; i < data.length; i++ ) {
    amounts = data[i].values; // amounts should be the values array not its length
  
    testArray = testArray.concat(amounts); // concat testArray with the current values array and store it back into testArray to continue accumulatig the result
}

console.log(testArray);