#javascript #arrays #object
#javascript #массивы #объект
Вопрос:
Я хочу проверить, доступно ли свойство объекта другому объекту, который возвращает true, если он есть. Я пробовал этот способ, но он выдает false. любые предложения будут оценены.
const checked = {0: true, 1: true, 2: true, 3 true, 4: true}
const newChecked = {0: true, 1: true, 2: true, 3: true, 4: true, 5: true, 6: true, 7: true, 8: true, 9: true}
Object.entries(checked).every(e => Object.entries(newChecked).includes(e))
Комментарии:
1. Почему объекты имеют последовательные «числовые» свойства, начинающиеся с нуля? Имхо, они должны быть массивами.
Ответ №1:
Если вы просто хотите проверить только свойства, вы можете использовать Object.keys
для этого
const checked = { 0: true, 1: true, 2: true, 3: true, 4: true };
const newChecked = {
0: true,
1: true,
2: true,
3: true,
4: true,
5: true,
6: true,
7: true,
8: true,
9: true,
};
const has = Object.keys(checked).every((key) =>
Object.keys(newChecked).includes(key)
);
console.log(has);
Для проверки как ключа, так и значения вы можете комбинировать использование Object.entries
и Array.prototype.findIndex
const checked = { 0: true, 1: true, 2: true, 3: true, 4: true };
const newChecked = {
0: true,
1: true,
2: true,
3: true,
4: true,
5: true,
6: true,
7: true,
8: true,
9: true,
};
const has = Object.entries(checked).every(
([keyToFind, valueToFind]) =>
Object.entries(newChecked).findIndex(
([key, value]) => key === keyToFind amp;amp; value === valueToFind
) !== -1
);
console.log(has);