Как объяснить функции что за переменная?

116
22 августа 2019, 14:50

Как объяснить функции какое значение мы передали?

Объект передаем такого типа

obj = { "Апельсины": {"price": 4,"kolvo": 2},"Бананы": {"price": 2,"kolvo": 0} }

Но выведет результат и с ценой и количеством

var items = { 
  "Апельсины": { 
    "price": 4, 
    "kolvo": 2 
  }, 
  "Бананы": { 
    "price": 2, 
    "kolvo": 0 
  } 
}; 
 
notification(items, (kolvo) => kolvo === 2) 
 
function notification(items, condition) { 
  for (const name in items) { 
    let price = items[name].price 
    let kolvo = items[name].kolvo 
    if (condition(price)) { 
      console.log(name + price) 
    } else if (condition(kolvo)) { 
      console.log(name + kolvo) 
    } 
  } 
}

Answer 1

Никак. Надо завести две функции - одна проверяет условие для цены, а вторая - для количества.

Если хочется поизвращаться, то можно дополнительный параметр передать, либо и с именем поля, либо просто флаг. Но это ннеудобно и неправильно.

Answer 2

var items = { 
  "Апельсины": { 
    "price": 4, 
    "kolvo": 2 
  }, 
  "Бананы": { 
    "price": 2, 
    "kolvo": 0 
  } 
}; 
 
// check price 
notification(items, item => item.price === 2); 
// check quantity 
notification(items, item => item.kolvo === 2); 
 
function notification(items, condition) { 
  for (const name in items) { 
    if (condition(items[name])) { 
      console.log(name, JSON.stringify(items[name])); 
    } 
  } 
}

var items = { 
  "Апельсины": { 
    "price": 4, 
    "kolvo": 2 
  }, 
  "Бананы": { 
    "price": 2, 
    "kolvo": 0 
  } 
}; 
 
notification(items, objCheck => { 
  for(var prop in objCheck) 
    return objCheck[prop] === 2; 
}); 
 
function notification(items, condition) { 
  for (const name in items) { 
    var price = items[name].price; 
    if (condition({price})) { 
      console.log(name, JSON.stringify(items[name])); 
    } 
  } 
}

READ ALSO
Заливка слоя-маски

Заливка слоя-маски

Предыстория

128
Как запустить скрипт ещё раз?

Как запустить скрипт ещё раз?

У меня есть вот такой скрипт

102
Почему тернарный оператор выдает undefined в цикле?

Почему тернарный оператор выдает undefined в цикле?

Не могу понять, почему выходит такой ответ в этом цикле, скажите пожалуйста

115