Как выполнить итерацию индекса в Javascript с использованием цикла forEach

#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. Запустите фрагмент сейчас