我正在尝试连接一个多维数组,以便可以迭代并显示所有数据。有一篇关于如何访问嵌套数据的非常好的帖子 here ,但我正在寻找一种适用于特定数据结构的解决方案。
这是我的数据:
var data = {
"Nike": [
{
"id": "1",
"name": "test",
"myimage": "image.gif"},
{
"id": "2",
"name": "test",
"myimage": "image.gif"}
],
"Adidas": [
{
"id": "3",
"name": "Football Boots",
"myimage": "image.gif"},
{
"id": "4",
"name": "Running Shoes",
"myimage": "image.gif"}
]}
如果我这样做,我似乎能够从 Nike 数组中获取值:
var result = data.Adidas;
for (var i = 0; i < result.length; i++) {
var object = result[i];
for (property in object) {
var value = object[property];
alert(property + "=" + value + "<br>");
}
}
但是我希望能够显示所有数组项(id 1-4)。
我尝试做的是:
var result = [].concat.apply([], data);
...并使用相同的 for 循环遍历结果变量,但它不起作用。
我理想的最终结果是在每个品牌名称下显示四种产品。我不需要显示实际的品牌名称本身。例如:
"id": "1",
"name": "test",
"myimage": "image.gif"
"id": "2",
"name": "test",
"myimage": "image.gif"
"id": "3",
"name": "Football Boots",
"myimage": "image.gif",
"id": "4",
"name": "Running Shoes",
"myimage": "image.gif"
感谢任何帮助。
干杯
最佳答案
您可以使用reduce
并迭代对象的键,然后创建数组:
var mashed = Object.keys(data).reduce(function(arr, key) {
return arr.concat(data[key]);
}, []);
关于Javascript Concat 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971357/