Проверить вхождение свойств и значений из одного объекта в другой
Есть необходимость проверить наличие пар КЛЮЧ: ЗНАЧЕНИЕ из одного объекта в другом. Если хоть одно сравнение отсутствует - вернуть false. Если все совпало - вернуть номер. Пример:
const obj = {
'0': '1.2294',
'1': '0.6634',
'2': '8.1167',
'3': '0.2936',
'4': '3.5590',
'5': '1.7247',
'6': '6.6207',
'7': '5.9992',
'8': '5.5911',
'9': '5.6656',
'10': '4.4482',
'11': '1.0487',
'12': '7.4847',
'13': '7.7417',
'14': '2.9427',
'15': '0.1428',
'16': '3.7415',
'17': '5.6842',
'18': '1.1759',
'19': '5.5838',
'20': '6.5913',
'21': '6.4061',
'22': '2.3436',
'23': '7.7358',
'24': '7.3307',
'25': '4.2396',
'26': '5.4466',
'27': '9.5938',
'28': '8.7445',
'29': '4.5083',
num: 0
};
const needToFind = {
'0': '1.2294',
'4': '3.5590',
'12': '4.4222'
};
const objLength = Object.keys(needToFind).length;
for(let i = 0; i < Object.keys(needToFind).length; i++){
if(obj[Object.keys(needToFind)[i]] !== needToFind[Object.keys(needToFind)[i]]){
break;
}
else{
console.log(obj.num);
}
}
Нужно проверить, есть ли в объекте obj такие же пары ключ-значение, что и в объекте needToFind. Пример приведен по циклу, но он работает не правильно.
Ответы (2 шт):
Автор решения: Stepan Kasyanenko
→ Ссылка
Можно сделать вот так.
const obj = {
'0': '1.2294',
'1': '0.6634',
'2': '8.1167',
'3': '0.2936',
'4': '3.5590',
'5': '1.7247',
'6': '6.6207',
'7': '5.9992',
'8': '5.5911',
'9': '5.6656',
'10': '4.4482',
'11': '1.0487',
'12': '7.4847',
'13': '7.7417',
'14': '2.9427',
'15': '0.1428',
'16': '3.7415',
'17': '5.6842',
'18': '1.1759',
'19': '5.5838',
'20': '6.5913',
'21': '6.4061',
'22': '2.3436',
'23': '7.7358',
'24': '7.3307',
'25': '4.2396',
'26': '5.4466',
'27': '9.5938',
'28': '8.7445',
'29': '4.5083',
num: 0
};
function findIn(sourceObject, targetObject) {
return !Object.keys(sourceObject).some(s => sourceObject[s] !== targetObject[s]) ? targetObject.num : false;
}
const needToFind = {
'0': '1.2294',
'4': '3.5590',
'12': '7.4847',
'29': '4.5081',
};
console.log(findIn(needToFind, obj));
const needToFind2 = {
'0': '1.2294',
'4': '3.5590',
'12': '7.4847',
'29': '4.5083',
};
console.log(findIn(needToFind2, obj));
Автор решения: Alex Sazonov
→ Ссылка
Не очень понял тз, но вот так я вижу сравнение объектов. Может даст какую идею.
const obj = {
'0': '1.2294',
'1': '0.6634',
'2': '8.1167',
'3': '0.2936',
'4': '3.5590',
'5': '1.7247',
'6': '6.6207',
'7': '5.9992',
'8': '5.5911',
'9': '5.6656',
'10': '4.4482',
'11': '1.0487',
'12': '7.4847',
'13': '7.7417',
'14': '2.9427',
'15': '0.1428',
'16': '3.7415',
'17': '5.6842',
'18': '1.1759',
'19': '5.5838',
'20': '6.5913',
'21': '6.4061',
'22': '2.3436',
'23': '7.7358',
'24': '7.3307',
'25': '4.2396',
'26': '5.4466',
'27': '9.5938',
'28': '8.7445',
'29': '4.5083',
num: 0
};
const needToFind = {
'0': '1.2294',
'4': '3.5590',
'12': '4.4222'
};
for(let prop in needToFind) {
for(let i = 0; i < Object.keys(obj).length; i++) {
if(prop === Object.keys(obj)[i] && needToFind[prop] === obj[Object.keys(obj)[i]]) {
console.log(Object.keys(obj)[i]);
}
}
}