JavaScript:在不使用reduce库的情况下展平数组

时间:2016-10-10 18:06:36

标签: javascript arrays loops

我有一个名为$ scope.instruments的嵌套数组,其内容为:

折叠:

enter image description here

展开:

enter image description here

我也有一个对象:

enter image description here

此对象包含2个数组:AttributeID和SPAttributeRefID。

目前我正在使用reduce函数展平$ scope.instruments数组:

$scope.instruments = $scope.instruments.reduce(function (result, instrument) {
    result[instrument.ID] = instrument;
    return result
}, {});

然后我访问对象的AttributeID并将其分配给这样的变量:

$scope.recordInstrument = $scope.instruments[data.AttributeID[0]].ID;

我宁愿使用不同的方法来获得相同的结果。我读到一个数组可以使用for循环展平,这是一种更有效的方法。不幸的是,到目前为止我所尝试的并没有给我相同的结果。

var arrInstruments = $scope.instruments;
var arrLength = arrInstruments.length;

for (var i = 0; i < arrLength; i++) {
    console.log(arrInstruments[i]);                                
}

有人可以帮我转换使用reduce函数的代码来使用循环并在AttributeID的赋值中得到相同的结果吗?

非常感谢。

1 个答案:

答案 0 :(得分:3)

此代码应该可以满足您的需求:

var arrInstruments = $scope.instruments;
var arrLength = arrInstruments.length;
var result = {}
for (var i = 0; i < arrLength; i++) {
    result[arrInstruments[i].ID] = arrInstruments[i];
}
// the result variable contains what you want.
  

但是我真的不明白为什么你会这么想。

您拍摄的截图:
enter image description here

多维数组。它只是你的控制台向你显示一个非常大的阵列的方式(所以它不需要&#34;绘制&#34;所有东西)。