【发布时间】:2016-01-13 13:55:05
【问题描述】:
我有一个对 Angular 的 ng-repeat 造成严重破坏的多维对象数组,因此我想将其转换为一维数组。我尝试使用forEach,但没有成功。当我在运行函数后尝试使用console.log(newData) 时,它返回一个空数组。是我做得太简单了,还是我犯了一个愚蠢的错误?
//Sample data (allData):
var allData = [{
"period": 4,
"uploadDate": "2015-11-19T21:00:00.000Z",
"section": [{
"transferCode": 8675309,
"details": [{
"voucherNumber": [34, 22],
"vendor": "jimmy",
"description": "blah ",
"amount": "t 45,555.00"
}]
}]
}, {
"period": 4,
"uploadDate": "2015-11-19T21:00:00.000Z",
"section": [{
"transferCode": 45576543,
"details": [{
"voucherNumber": [22, 33],
"vendor": "Jonson",
"description": "trap music ",
"amount": "t 12,345.00"
}]
}]
}]
//code to push to new array:
var newData = [];
function newArray() {
allData.forEach(function(top) {
top.section.forEach(function(mid) {
mid.details.forEach(function(low) {
newData.push({
vendor: low.vendor,
voucherNumber: low.voucherNumber,
description: low.description,
amount: low.amount,
transferCode: mid.transferCode,
uploadDate: top.uploadDate,
period: top.period
})
})
})
})
return newData;
}
newArray();
document.body.textContent = JSON.stringify(newData);
【问题讨论】:
-
到底是什么问题?出了什么问题?
-
公平的问题!让我编辑问题以包含它。谢谢你的收获!
-
@JoshuaSwiss 实际上效果很好。
-
是的,它确实在这里,只是不在我的代码中!我会玩弄它的。谢谢你至少确认我没有疯。
-
我建议的一件事是
newData应该被声明(或至少重新初始化)inside 函数。实际上,如果您调用该函数两次,它会将所有内容添加到现有数组的末尾。
标签: javascript arrays foreach