Проверка, находится ли элемент внутри массива, содержащегося в объекте, используя JavaScript - PullRequest
0 голосов
/ 21 марта 2019

У меня есть объект, который содержит массив объектов, таких как

{ 
    0: [
          { value:1}
          { value:2}
          { value:3}

       ]
}

Я пытаюсь проверить, находится ли элемент внутри массива, поэтому, что я делаю, я зацикливаюсь на нем, как Object.values(object).some(el => el.value === someNumber) но всегда возвращает false, у кого-нибудь есть идеи, почему? someNumber может быть чем угодно, это динамическое значение.

Ответы [ 3 ]

2 голосов
/ 21 марта 2019

Вы пытаетесь проверить el, который на самом деле массив с someNumber, который, как я предполагал, является числом.Чтобы делать то, что вам нужно, нужно что-то вроде этого:

const obj = { 
  0: [
    { value:1},
    { value:2},
    { value:3}
 ]
}

const someNumber = 2;
const result = Object.values(obj).some((arr) => arr.some((el) => el.value === someNumber));
console.log(result)
2 голосов
/ 21 марта 2019

Массив находится в элементе [0] объекта, поэтому вы должны использовать object[0], а не Object.values(object).

const object = { 
  0: [
    { value:1},
    { value:2},
    { value:3}
 ]
}

console.log(object[0].some(el => el.value === 1));
console.log(object[0].some(el => el.value === 6));

Если ваш объект не может содержать больше свойств, и вы не хотите искать их все. Тогда другие ответы более правильные.

2 голосов
/ 21 марта 2019

Вам нужен другой уровень, потому что Object.values возвращает массив массива.

var object = { 0: [{ value: 1 }, { value: 2 }, { value: 3 }] };

console.log(Object.values(object).some(values => values.some(el => el.value === 2)));
console.log(Object.values(object).some(values => values.some(el => el.value === 7)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...