2014-09-26 2 views
0

Используя jQuery, я хочу выводить одни и те же значения один раз из массива объектов. Я полагаю, что могу создать временный массив и сравнить его, когда я перебираю объект, но не совсем уверен, как это сделать.Вывести только одно значение из массива объектов

Объект выглядит так,

[{"type":"Sample1","manufacturer":"Sample2","model":"Sample3"},{"type":"Sample1","manufacturer":"Sample4","model":"Sample5"}] 

Скажи, что я хочу только выход типа sample1 один раз,

var sampleObject, 
    storage = []; 

$.each(sampleObject, function(key, item) { 
    if (!$.inArray(storage.item == item)) { 
     console.log(item); 
     storage.push(item); 
    } 
}); 
+0

Какое значение вы даете для 'хранения '? – Stryner

+0

Извините, что забыл включить часть, см. Обновление. –

ответ

0

Реализованный я мог бы просто сделать это, как это вместо того, чтобы и избежать хлопот сравнения массивов,

var type, 
     brand, 
     model; 

    $.each(data, function (key, item) { 
     if (item['type'] != type) { 
      // Output type 
     } 
     if (item['manufacturer'] != brand) { 
      // Output brand 
     } 
     if (item['model'] != model) { 
      // Output model 
     } 

     type = item['type']; 
     brand = item['manufacturer']; 
     model = item['model']; 
    }); 
1

Прежде всего, вы используете inArray неправильно. Из документов JQuery:

jQuery.inArray(value, array [, fromIndex ]) 

Она возвращает позицию (индекс), где значение было найдено в массиве.

if (!$.inArray(storage.item == item)) 

не имеет смысла. Это должно быть:

if ($.inArray(item, storage.item)==-1) 

Но также и сравнение неверно. Вы должны перебирать каждое значение в элементе и помещать каждое значение в массив хранения.

Проверьте, если это то, что вы хотите:

$.each(sampleObject, function(key, item) { 
    var found = false; 
    $.each(item, function (prop, val) { 
    if($.inArray(val, storage) == -1){ 
     storage.push(val); 
    } else { 
     found = true; 
    } 
    }); 
    if (!found) 
    console.log(item) 
}); 
+0

Спасибо Amit. Я сделал еще один подход и понял, что его можно решить более простым способом, поскольку мне не нужно сравнивать массивы, см. Обновленную запись. –

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