Javascript Concat 多维数组

标签 javascript arrays multidimensional-array

我正在尝试连接一个多维数组,以便可以迭代并显示所有数据。有一篇关于如何访问嵌套数据的非常好的帖子 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]);
}, []);

演示:https://jsfiddle.net/kvd6egn5/

关于Javascript Concat 多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971357/

相关文章:

java - 如何打印和加载带有随机数的数组

c# - 二维数组按钮显示 X 和 Y

java - 将文本读入二维数组

javascript - 使用 AngularJS 的 window.bind() 类似功能

javascript - 使用 JavaScript 显示选定的复选框值

javascript - 在 Javascript 中使用 call 和 apply 的上下文?

javascript - 扩展一个 Controller 来扩展另一个 Controller 时出现问题

java - 在 Java 中转换为字符串时,从 StringArray 的未使用空间中删除 null

python - 在 python3 中的数组对象旁边添加一些东西

php - 通过带分隔符的字符串访问多维数组