Проверить на 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 шт):
Если взять ваш формат стейта, а это у вас массив из 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)
Чуть позже в снипет оберну и в порядок приведу. С телефона не удобно (