Проверить на null ключи массива объекта ключей с уникальными именами react

У меня есть такой хук с массивом, в котором есть перечень ключей с уникальными именами. И каждый ключ содержит в себе массив с объектом:

const [Value, setValue] = useState([
      {
        Item1: [{test1: null, test2: null}],
        Item2: [{test1: "some text", test2: "some text"}],
        Item3: [{test1: null, test2: null}],
        ...
        ItemN: [{test1: null, test2: null}]
      }
])

Ключи test1 и test2 имена постоянные. Т.е. все Item будут содержать только эти ключи. На деле, этим ключей Item будет очень много, и мне нужно проверить test1 и test2 на null каждого Item. Проблема с обращением к ключам Item.

Я пробовал Object.keys, но ничего не получаю, и ошибок так же нет:

{Object.keys(Value).map((item, i) => {
  if (item.test1 !== null && item.test2 !== null) {
     return (<div key={i}>{item.test1 - item.test2}</div>)
  }
})}

Ответы (1 шт):

Автор решения: SwaD

Если взять ваш формат стейта, а это у вас массив из 1 элемента, где лежит объект с ключами, значение каждого ключа это массив с объектом(arr-obj-arr-obj), тогда код будет выглядеть так:

const Value =  [{
        Item1: [{test1: null, test2: null}],
        Item2: [{test1: "some text", test2: "some text"}],
        Item3: [{test1: null, test2: null}],
        ItemN: [{test1: null, test2: null}]
      }];
// получаем значения из 1го элемента массива
const res = Object.values(Value[0]).map((item, i) => {
  // проверяем в 1м элементе массива ключи
  if (item[0].test1 !== null && item[0].test2 !== null) {
     return 1;
  }
  return 0
})

console.log(res)

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

const Value =  {
        Item1: {test1: null, test2: null},
        Item2: {test1: "some text", test2: "some text"},
        Item3: {test1: null, test2: null},
        ItemN: {test1: null, test2: null}
      };

const res = Object.values(Value).map((item, i) => {
  if (item.test1 !== null && item.test2 !== null) {
     return 1;
  }
  return 0
})

console.log(res)

Чуть позже в снипет оберну и в порядок приведу. С телефона не удобно (

→ Ссылка