Реагировать на родной объект дать имя в массиве - PullRequest
0 голосов
/ 12 мая 2019

Мой массив выглядит следующим образом:

Array [
  Object {
    "color": "Brown",
    "time": "18:32",
  },
  Object {
    "color": "Red",
    "time": "18:33",
  },
]

Но как я могу изменить Object на имя?

Я нажимаю его так:

const itemLogs = [];

childSnapshot.forEach((csh) => {
let childKeys = csh.key;
itemLogs.push({
    color:   csh.val().color,
    time:   csh.val().time
});
});
this.setState({childData: itemLogs});

UPDATE:

Вот как я хотел бы получить его:

10-05-2019 [
  14:27 {
    "color": "Brown",
    "time": "14:27",
  },
  14:23 {
    "color": "Red",
    "time": "14:23",
  },
],
11-06-2019 [
like above but other data
]

Надеюсь, это лучший пример.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Отладчик визуализирует ваши данные следующим образом:

Array [
  Object {
    "color": "Brown",
    "time": "18:32",
  },
  Object {
    "color": "Red",
    "time": "18:33",
  },
]

Но на самом деле это выглядит так:

[
  {
    "color": "Brown",
    "time": "18:32",
  },
  {
    "color": "Red",
    "time": "18:33",
  },
]

Вы можете добавить свойство name к вашим объектам с помощью:

itemLogs.push({
    color:   csh.val().color,
    time:   csh.val().timem,
    name: 'YOUR_NAME_GOES_HERE'
});

Тогда ваши данные будут выглядеть так:

[
  {
    "color": "Brown",
    "time": "18:32",
    "name": "YOUR_FIRST_NAME",
  },
  {
    "color": "Red",
    "time": "18:33",
    "name": "YOUR_SECOND_NAME",
  },
]

Обновленное решение:

const itemLogs = {}; //create an object

var arr = []; // create a temporary array 
var tmp = {}; //create a temporary object 
 tmp["14:27"] = {
    "color": "Brown",
    "time": "14:27",
  }; 

arr.push(tmp); // add object to array 


var tmp2 = {}; //create another tmp object
 tmp2["14:23"] = {
   "color": "Red",
    "time": "14:23",
  }; 
arr.push(tmp2); // add object to array 
itemLogs["10-05-2019"] = arr; // add the array to itemLogs with new key

console.log(itemLogs);
0 голосов
/ 12 мая 2019

Спасибо Тиму

let userId = firebase.auth().currentUser.uid;
    firebase.database().ref('table/' + userId).on('value', (snapshot) => {
        const itemLogs = {};
        const tmp = {};
        snapshot.forEach((childSnapshot) => {
            childSnapshot.forEach((csh) => {

                tmp[csh.key] = {
                    color:   csh.val().color,
                    time:   csh.val().time
                };
            });
            itemLogs[childSnapshot.key] = tmp;
            console.log(itemLogs);
        });
    });

Теперь это выглядит так:

    Object {
  "11-5-2019": Object {
    "18:32": Object {
      "color": "Brown",
      "time": "18:32",
    },
    "18:33": Object {
      "color": "Red",
      "time": "18:33",
    },
  },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...