有什么办法可以创建像这样的数组或对象数组吗?

时间:2020-11-05 06:57:53

标签: javascript

这是我一次获取多个GET URL,然后将获取的JSON数据放入的地方

   Promise.all([
     fetch('http://127.0.0.1:8000/api/chartTable').then((response) => response.json()),
     fetch('http://127.0.0.1:8000/api/chartTable1').then((response) => response.json()),
  ]).then(function (response) {
    console.log(...response.map((res) => res['userDetails']));
  });

当我做console.log(... response.map((res)=> res ['userDetails']))); .Inscpect中的数据将像这样

            (3) [{…}, {…}, {…}]
             0 : {"id": 1, "name": "Robbie", "kill": 12 , "knock": 1}, 
             1 : {"id": 2, "name": "Mohamand", "kill": 12 , "knock": 4},
             2 :{"id": 3, "name": "Jebisha", "kill": 8 , "knock": 4}

          (3) [{…}, {…}, {…}]
                  {"id": 1, "name": "Robbie", "kill":12  , "knock": 4}, 
                 {"id": 2, "name": "Mohamand", "kill": 13 , "knock": 3},
                 {"id":3, "name": "Jebisha", "kill": 5 , "knock": 1}

但是我想这样转换

     "key1": [{"id": 1, "name": "Robbie", "kill": 12 , "knock": 1}, 
                   {"id": 2, "name": "Mohamand", "kill": 12 , "knock": 4},
                   {"id": 3, "name": "Jebisha", "kill": 8 , "knock": 4}],

    "key2": [
                 {"id": 1, "name": "Robbie", "kill":12  , "knock": 4}, 
                 {"id": 2, "name": "Mohamand", "kill": 13 , "knock": 3},
                 {"id":3, "name": "Jebisha", "kill": 5 , "knock": 1}]

当我创建变量并创建演示时。 console.log(res)。错误提示无法读取未定义的属性“ map”

 var demo=[{key1: response[0].userDetails, key2: response[1].userDetails}];
 var res = demo.key1.map(function(item, idx) {
            return Object.keys(item).reduce(function(obj, key) {
                if (key == 'name') {
                    obj[key] = item[key]
                } else {
                    obj[key] = item[key] + demo.key2[idx][key];
                }
                return obj;
            }, {});
        });
        console.log(res)

1 个答案:

答案 0 :(得分:0)

您可以将数组映射到对象的值并将其展平:

// if you have this
var array = [{ 0 : {"id": 1, "name": "Robbie", "kill": 12 , "knock": 1}}, 
             { 1 : {"id": 2, "name": "Mohamand", "kill": 12 , "knock": 4}},
             {2 :{"id": 3, "name": "Jebisha", "kill": 8 , "knock": 4}}]

var array2 = array.map(item => Object.values(item)).flat()
console.log(array2)  
/*
Will print
[{
  id: 1,
  kill: 12,
  knock: 1,
  name: "Robbie"
}, {
  id: 2,
  kill: 12,
  knock: 4,
  name: "Mohamand"
}, {
  id: 3,
  kill: 8,
  knock: 4,
  name: "Jebisha"
}]
*/