Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по синтаксису в js

Георгий Бурмистров Ученик (234), на голосовании 6 месяцев назад
Вот например у нас есть два массива

 { 
flour: 500,
sugar: 200,
eggs: 1
},
{
flour: 1200,
sugar: 1200,
eggs: 5,
milk: 200
}
и мне надо проверить , есть ли во втором массиве все ключи из первого
(в первом flour,sugar,eggs. А во втором все из первого и еще и milk,то должно выдать true)
Подскажите пожалуйста
Дополнен 7 месяцев назад
Не массивы, а обьекты*
Голосование за лучший ответ
Яков Гото Искусственный Интеллект (320440) 7 месяцев назад
Только это не массивы, а объекты. Поставка вопроса из-за этого хромает.
Георгий БурмистровУченик (234) 7 месяцев назад
да ,ошибся
Яков Гото Искусственный Интеллект (320440)
 const obj1 = {  
  flour: 500,   
  sugar: 200,   
  eggs: 1  
}, 
obj2 = { 
    flour: 1200,  
    sugar: 1200,  
    eggs: 5,  
    milk: 200 
}; 
 
const checkObj1 = Object.keys(obj1).reduce((a,b) => { 
  return a && Object.keys(obj2).includes(b) && Object.keys(obj2).includes('milk') ? true : false 
}, true); 
 
const checkObj2 = Object.keys(obj2).reduce((a,b) => { 
  return a && Object.keys(obj1).includes(b) ? true : false 
}, true); 
 
console.log(checkObj1); 
console.log(checkObj2); 
delПросветленный (20436) 7 месяцев назад
Ну вообщето это не объекты а литералы объетного типа.
☀︎Питруха☀︎ Мастер (1806) 7 месяцев назад
взять 1й ключ, затем пробежаться по ключам второго объека, затем взять воторой ключ пробежаться по ключам второго объекта и т д
Павел Просветленный (25617) 7 месяцев назад
Ну а у сомого идеи то есть?

Подсказываю ? :

Это очень просто если знаешь нужные операторы. Задаче поможет цикл for...in а также отдельно оператор in.
 // твой код
for(const ingredient in recepie1){
if(ingredient in recepie2 == false){
// твой код
}
}
// твой код
Это уже каких 50% всего кода.
Саму проверку желательно обернуть в функцию для повторного вызова.

Тот код который тебе запостили в комментах, едва проходной балл даёт (в чём сомневаюсь). Методы не по назначению, излишние конструкции/переменные. И что самое главное, в самом коде проверки жёстко прописывается название свойства, что делает код применимым только к этим конкретным объектам.
Георгий БурмистровУченик (234) 7 месяцев назад
Спасибо, я просто подумал моет есть способ покруче чем просто перебор, например какой нибудь метод или алгоритм, а так спасибо)
Похожие вопросы