2016-01-06 5 views
1

У меня есть объект javscript, содержащий имя продукта и соответствующий код продукта. Код уникален.Как проверить значение в объекте javascript?

var products = { 
"Pineapple":38, 
"Apple":110, 
"Pear":109 
}; 

Если я хочу знать код продукта я могу просто сделать

var pineapplecode = products["Pineapple"]; 

Как проверить, есть ли продукт для заданного числа, а если печать это? Или мне нужно/нужно изменить способ сохранения данных?

+0

Там нет ключа, как 'product' в данном объекте .. – Rayon

+2

Вы должны были бы перебрать все свойства, которые ищут для значения кода. У вас могут быть * два * объекта, одно сопоставление от имени к коду и другое сопоставление от кода до имени. – Pointy

ответ

0

Я думаю, вы в основном спрашиваете, могу ли я проверить другой способ, то есть проверить ключ, передав значение.

Да, вы можете,

  • Либо перебор всех ключей и значений, проверьте значение существующее и, наконец, вернуть ключ, если значение существует

  • изменить способ сохранения данные, индекс его номер продукта, а не название продукта

здесь код для преобразования одной формы в другую

var newProducts = {}; 
for(var prodName in products) 
{ 
    newProducts[ products[ prodName ] ] = prodName; 
} 
console.log(newProducts); 

А вот код, чтобы проверить конкретное значение

var valueToCheck = "110"; 
var prodNameToFind = ""; 
for(var prodName in products) 
{ 
    if (products[ prodName ] == valueToCheck) 
    { 
     prodNameToFind = prodName; 
    } 
} 
console.log(prodNameToFind); 
1

Я думаю, самый короткий путь будет:

var prodCode = 38; 
var result = Object.keys(products) 
        .filter(function(k) { return products[k] == prodCode; })[0]; 

// result == "Pineapple" 

См MDN

+0

Код продукта должен быть уникальным, я полагаю. –

+0

@NinaScholz, я так полагаю. Вот почему я возвращаюсь только «[0]», считая, что это единственный найденный. – haim770

+0

, но тогда нет необходимости перебирать все элементы. –

0

Просто перебирать ключи и значения свойств и разбить итерацию, если она найдена с помощью Array.prototype.some()

Метод some() проверяет, прошел ли какой-либо элемент в массиве тест, реализованный предоставленной функцией.

var products = { 
 
     Pineapple: 38, 
 
     Apple: 110, 
 
     Pear: 109 
 
    }; 
 

 
function getProduct(code) { 
 
    var product; 
 
    Object.keys(products).some(function (k) { 
 
     if (products[k] === code) { 
 
      product = k; 
 
      return true; 
 
     }   
 
    }); 
 
    return product; 
 
} 
 
document.write(getProduct(109));

Смежные вопросы