Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Concat多维数组_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript Concat多维数组

Javascript Concat多维数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我正在尝试浓缩一个多维数组,以便迭代和显示所有数据。有一篇关于如何访问嵌套数据的非常好的帖子,但我正在寻找一种能够处理特定数据结构的解决方案 以下是我的数据: var data = { "Nike": [ { "id": "1", "name": "test", "myimage": "image.gif"}, { "id": "2", "name": "test", "myimage": "image.gif"} ], "A

我正在尝试浓缩一个多维数组,以便迭代和显示所有数据。有一篇关于如何访问嵌套数据的非常好的帖子,但我正在寻找一种能够处理特定数据结构的解决方案

以下是我的数据:

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>");
 }
}
。。。并使用相同的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"
谢谢你的帮助


Cheers

您可以使用
reduce
迭代对象的键,然后创建数组:

var mashed = Object.keys(data).reduce(function(arr, key) {
    return arr.concat(data[key]);
}, []);

演示:

您可以使用
reduce
迭代对象的键,然后创建数组:

var mashed = Object.keys(data).reduce(function(arr, key) {
    return arr.concat(data[key]);
}, []);

演示:

减少的另一种选择是
用于in
循环:

let res = [];
for (let key in data) res = res.concat(data[key]);
console.log(res);

减少的另一种方法是使用
for in
循环:

let res = [];
for (let key in data) res = res.concat(data[key]);
console.log(res);

您可以使用lodash mergeWith功能:

const object = {
  'a': [{ 'b': 2 }, { 'd': 4 }]
};

const other = {
  'a': [{ 'c': 3 }, { 'e': 5 }]
};

_.merge(object, other);

您可以使用lodash mergeWith功能:

const object = {
  'a': [{ 'b': 2 }, { 'd': 4 }]
};

const other = {
  'a': [{ 'c': 3 }, { 'e': 5 }]
};

_.merge(object, other);

完美的可能复制品的可能复制品!!这正是我想要的。非常感谢tymeJVPerfect!!这正是我想要的。非常感谢tymeJV