Как вывести ключи в парах ключ-значение во вложенных массивах JavaScript - PullRequest
0 голосов
/ 07 ноября 2018

Внутри массива item есть массив с именем «folder», а внутри массива есть «info». Как я могу печатать только ключи, а не значение из массива info? как в распечатке «создано» и «изменено»?

let item = [
  {
    itemName: 'folder',
    info:
    {
      created:'August 13 2013',
      modified: 'December 06 2017'
    }
  },
  {
    itemName: 'new folder',
    info: 'ruby files'
  },
  {
    itemName: 'documents',
    info: ''  
  }
]

Ответы [ 4 ]

0 голосов
/ 07 ноября 2018

Ну, это не бесконечно рекурсивно, но оно работает (я постараюсь улучшить его)

let items = [
    {
        itemName: 'folder',
        info:
        {
            created:'August 13 2013',
            modified: 'December 06 2017'
        }
    },
    {
        itemName: 'new folder',
        info: 'ruby files'
    },
    {
        itemName: 'documents',
        info: ''    
    }
];

let Keys = [];

items.forEach((el, index) => {
    Object.keys(el).forEach(key => {
        if(!Keys[index])
            Keys[index] = [];
        if(typeof el[key] === 'object'){
            Keys[index].push(Object.keys(el[key]));
        }
        else {
            Keys[index].push(key);
        }
    })
});

JSFiddle

0 голосов
/ 07 ноября 2018

Проверьте каждый элемент с помощью forEach и, если свойство элемента info является объектом, напечатайте его ключи.

item.forEach(data => {
  if(data.info.constructor === Object) {
    console.log(Object.keys(data.info));
  }
})
0 голосов
/ 07 ноября 2018

посмотрите на каждое свойство и используйте рекурсивную функцию, чтобы углубиться:

  let item = [
  {
    itemName: 'folder',
    info:
    {
      created:'August 13 2013',
      modified: 'December 06 2017'
    }
  },
  {
    itemName: 'new folder',
    info: 'ruby files'
  },
  {
    itemName: 'documents',
    info: ''  
  }
];

var console=window.console;

function displayObj(obj) {
    if (obj instanceof Array) {
        for (var i = 0; i < obj.length; i++) {
            console.log('obj['+i+']='+obj[i]);
            displayObj(obj[i]);
        }

    }
    if (obj instanceof Object) {
        for (var p in obj) {
            console.log('obj.'+p+'='+obj[p]);
            displayObj(obj[p]);
        }
    }
}

displayObj(item);
0 голосов
/ 07 ноября 2018

Вы можете напечатать ключи объекта, зациклив массив и использовать Object.keys() для печати ключей

...