@QnaTwitt

Как определить есть ли массив в объекте?

Как можно определить есть ли в объекте массив, и получить название этого массива (items)

const list = [
    { id: '1', name: '111111' },
    { id: '2', name: '222222' },
    { id: '3', name: '333333' },
    {
      id: '4',
      name: '444444',
      category: [
        { id: '', name: '' },
        { id: '', name: '' },
        { id: '', name: '' }
      ]
    },
    {
      id: '5',
      name: '555555',
      lists: [
        { id: '', name: '' },
        { id: '', name: '' },
        { id: '', name: '' }
      ]
    },
    {
      id: '6',
      name: '66666',
      items: [
        { id: '1', name: '' },
        { id: '', name: '' },
        { id: '', name: '' }
      ]
    }
  ];


Это будет работать по типу, если у меня есть в объекте с данными массив, тогда будет грузится компонент с выпадающей меню, если же в объекте только id\name (как в примере), тогда меню будет без выпадающего, и клик будет по name из объекта....
  • Вопрос задан
  • 106 просмотров
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега JavaScript
const getArrayKeys = obj => Object
  .entries(obj)
  .reduce((acc, n) => (Array.isArray(n[1]) && acc.push(n[0]), acc), []);


const arrayKeys = list.map(getArrayKeys);
Ответ написан
Комментировать
@denisromanenko
Как я понял нужно найти не просто "а это свойство массив или нет?", а входит ли определенный массив в объект.

const list = [
  { id: '1', name: '111111' },
  { id: '2', name: '222222' },
  { id: '3', name: '333333' },
  {
    id: '4',
    name: '444444',
    items: [
      { id: '1', name: '1111' },
      { id: '2', name: '22222' },
      { id: '3', name: '3333' }
    ]
  },
  { id: '5', name: '555555' }
]

const arr = [
  { id: '1', name: '1111' },
  { id: '2', name: '22222' },
  { id: '3', name: '3333' }
]

list.forEach((item) => {
  findArrInObj(item)
})

function findArrInObj(obj) {
  const stringifiedArr = JSON.stringify(arr)
  for (const [key, value] of Object.entries(obj)) {
    if (JSON.stringify(value) === stringifiedArr) {
      console.log(key)
    }
  }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы