Я хочу поместить строку в каждое значение массива, как показано ниже. Но я не хочу использовать слишком много, если операторы - PullRequest
1 голос
/ 25 февраля 2020

Я хочу сделать это как ближайший (число, массив) [42] = "Sweets"; но это не работает Как я могу заставить его работать без написания слишком много, если операторы?

function closest (num, arr) {
    var curr = arr[0];
    var diff = Math.abs (num - curr);
    for (var val = 0; val < arr.length; val++) {
        var newdiff = Math.abs (num - arr[val]);
        if (newdiff < diff) {
            diff = newdiff;
            curr = arr[val];
        }
    }
    return curr;
}

array = [42, 82, 122, 162, 202];
number = 33;
if (closest (number, array) == 42) {
var z = "Sweets";}
if (closest (number, array) == 82) {
var z = "Chicken";}
if (closest (number, array) == 122) {
var z = "Beef";}
if (closest (number, array) == 162) {
var z = "Pizza";}
if (closest (number, array) == 202) {
var z = "Apple";}
alert (z);

1 Ответ

0 голосов
/ 25 февраля 2020

Используйте массив объектов вместо множества if операторов.

function closest(num, arr) {
  var curr = arr[0];
  var diff = Math.abs(num - curr.price);
  for (var val = 1; val < arr.length; val++) {
    var newdiff = Math.abs(num - arr[val].price);
    if (newdiff < diff) {
      diff = newdiff;
      curr = arr[val];
    }
  }
  return curr;
}

array = [{
  item: 'Sweets',
  price: 42
}, {
  item: 'Chicken',
  price: 82
}, {
  item: 'Beef',
  price: 122
}, {
  item: 'Pizza',
  price: 162
}, {
  item: 'Apple',
  price: 202
}];
number = 33;
z = closest(number, array);
console.log(z.item);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...