#javascript #jquery
#javascript #jquery
Вопрос:
Я пытаюсь выполнить итерацию этого объекта. Я проверил код через Интернет и обнаружил, что Object.enteries может работать, но пока он возвращает только 1-е пользовательское имя, то есть «Asad». Я хочу выполнить итерацию до полного массива, а не только до первого.
var myObject = {
"records": [
{
"id": "recDBqsW7C3Dk3HMd",
"fields": {
"Latitude": "24.898907",
"Longitude": "67.117303",
"CustomerName": "Asad"
},
"createdTime": "2020-10-07T04:43:31.000Z"
},
{
"id": "recGlfTbUcEvP46Lf",
"fields": {
"Latitude": "24.907641",
"Longitude": "67.1088035",
"CustomerName": "Umar"
},
"createdTime": "2020-10-07T04:44:11.000Z"
},
{
"id": "recfsQsoznDyWPDe8",
"fields": {
"Latitude": "24.911112",
"Longitude": "67.105117",
"CustomerName": "Ali"
},
"createdTime": "2020-10-06T09:11:05.000Z"
}
]
};
Object.entries(myObject).forEach(([key, value], index) => {
console.log( value[index].fields.CustomerName); // key ,value
});
Результат:
"Asad"
Комментарии:
1. В нем есть только одна запись
myObject
, и имя ее свойства — «records».2.
index
является ли индекс вmyObject
свойствах, почему вы используете его в качестве индексаvalue
?3. Как я могу изменить этот код, чтобы выполнить итерацию каждого «имени пользователя».
Ответ №1:
Массив на самом деле является свойством объектного литерала, в котором вы его определили. Все, что вам нужно сделать, это получить доступ к этому массиву и вызвать Array.prototype.forEach
его, чтобы получить доступ к его элементам. Что-то вроде этого:
//Extract the array from your data structure into a variable. Always use
//a const if the variable will not need to be re-assigned in the program.
const {
records
} = {
"records": [{
"id": "recDBqsW7C3Dk3HMd",
"fields": {
"Latitude": "24.898907",
"Longitude": "67.117303",
"CustomerName": "Asad"
},
"createdTime": "2020-10-07T04:43:31.000Z"
},
{
"id": "recGlfTbUcEvP46Lf",
"fields": {
"Latitude": "24.907641",
"Longitude": "67.1088035",
"CustomerName": "Umar"
},
"createdTime": "2020-10-07T04:44:11.000Z"
},
{
"id": "recfsQsoznDyWPDe8",
"fields": {
"Latitude": "24.911112",
"Longitude": "67.105117",
"CustomerName": "Ali"
},
"createdTime": "2020-10-06T09:11:05.000Z"
}
]
};
//Iterate over the items in the array to access the data you need
records.forEach(record => {
console.log(`${record.id} = ${record.fields.CustomerName}`);
});
Ответ №2:
Попробуйте этот код, пожалуйста. Он находит keys
, а затем выполняет итерацию с forEach
for (var key of Object.keys(myObject)) {
myObject[key].forEach((v) => {
console.log(v.fields.CustomerName)
})
}
Ответ №3:
В общем, вы используете здесь неправильный подход.
То, что вам нужно сделать, это:
var myObject = {
"records": [
{
"id": "recDBqsW7C3Dk3HMd",
"fields": {
"Latitude": "24.898907",
"Longitude": "67.117303",
"CustomerName": "Asad"
},
"createdTime": "2020-10-07T04:43:31.000Z"
},
{
"id": "recGlfTbUcEvP46Lf",
"fields": {
"Latitude": "24.907641",
"Longitude": "67.1088035",
"CustomerName": "Umar"
},
"createdTime": "2020-10-07T04:44:11.000Z"
},
{
"id": "recfsQsoznDyWPDe8",
"fields": {
"Latitude": "24.911112",
"Longitude": "67.105117",
"CustomerName": "Ali"
},
"createdTime": "2020-10-06T09:11:05.000Z"
}
]
};
myObject.records.forEach((value, index) => {
console.log( value.fields.CustomerName); // key ,value
});
Поступая таким образом, вы будете легко перебирать свои записи и получать все имена.
То, что вы сейчас делаете, — это перебор пар ключ-значение myObject
where Object.entries(myObject)
, которые вернутся к вам [['records', [array of the users]]]
, тогда console.log
in forEach
блок будет вызван один раз, так как у вас там только одна запись.
Комментарии:
1. MyObject не определен
2. Запустите фрагмент сейчас