Есть ли какой-либо способ создать массив или массив объектов, подобных этому?

#javascript

#javascript

Вопрос:

Здесь я должен был получить сразу несколько URL-адресов GET, а затем поместить полученные данные 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. console.log(...response.map((res, i) => ({[`${key}${i 1}`]: res['userDetails']})));

2. ошибка @JaromandaX похожа на то, что ключ не определен

3. Я ошибся — должно было быть [`key${i 1}`]

4. Итак, просто console.log({key1: response[0].userDetails, key2: response[1].userDetails}) ?

5. что такое salesTables? это пользовательские данные в коде, который вы показали

Ответ №1:

Вы можете сопоставить массив со значениями объекта и сгладить его:

 // 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"
}]
*/