Получают значение свойства из объекта и присваивают его переменной в javascript

#javascript #arrays #loops #iterator #javascript-objects

#javascript #массивы #циклы #итератор #javascript-объекты

Вопрос:

У меня есть этот объект, и мне нужно получить значение свойства name , чтобы присвоить его переменной, чтобы я мог использовать его для каждой опции в меню. Вот возвращаемые данные:

 “parentArrayOfObjects”: [
    {
     “data”: {
        “current”: {
           “id”: 0, 
           “name”: “Winter”
         }   
      }
    },
    {
      “data”: {
         “current”: {
            “id”: 0, 
            “name”: “Spring”
          }   
        }
     }    
 ]
  

Используя вышесказанное, я получаю одинаковое значение для data.current.name свойства для каждого меню с индексом 0, а это не то, что я хочу. Пожалуйста, скажите мне, что я делаю не так. Спасибо.

 // returns same name in all menus
var getCurrentChildPropertyName = (function(){
    for (var value in parentArrayOfObjects) {
         var currentChildProperty=parentArrayOfObjects[value].data.current;
         if( currentChildProperty !== null){                                                        
             return currentChildProperty.name;
         }
    }
})();

// returns same name in all menus
var getCurrentChildPropertyName = (function(){
    for ( var i = 0; i < parentArrayOfObjects.length; i  ) {
          var currentChildProperty = parentArrayOfObjects[i].data.current;
          if( currentChildProperty !== null){
              return currentChildProperty.name;
          }
     }
})();


// Use different returned name in each menu (ExtJs3)
     dataStore.insert(0, [new Ext.data.Record({
                 id: 0,                                                    
                 name: getCurrentChildPropertyName
     })
  

Комментарии:

1. Вы return редактируете, когда находите совпадение, что завершает выполнение функции и немедленно возвращает значение.

Ответ №1:

 const x = {'parentArrayOfObjects': [
  {
   'data': {
      'current': {
         'id': 0,
         'name': 'Winter'
       }
    }
  },
  {
    'data': {
       'current': {
          'id': 0,
          'name': 'Spring'
        }
      }
   }
]}

const results = x.parentArrayOfObjects.map((item) => item.data.current.name);

console.log(results); //[ 'Winter', 'Spring' ]
  

Комментарии:

1. Спасибо. Я попробую это, но если это возвращает массив имен сразу, это проблема, с которой я уже сталкиваюсь. Что мне нужно, так это то, что после того, как я получу имена в массиве, как мне получить уникальное имя ( вот почему переменная в единственном числе, а не во множественном ), чтобы я мог присвоить это уникальное имя конкретному названию элемента меню ( как в методе datastore.insert )? Например: menu1.index0.name = Winter, menu2.index0.name = Spring и так далее.