2016-02-04 1 views
0

Я создаю массив объектов javascript. Внутри объектов я хочу один ключ со всеми атрибутами, связанными с этим ключом в том же ведре.Атрибут объектов хранит те же атрибуты в ключе

Для примера еды [{фруктов: «яблоки», «бананов»}, {специи: «чили», «Cajun»}]

Если ключ уникален затем добавить в массив в противном случае просто место в тот же ведро.

Код ниже

$('.options li').each(function() { 
    $name = $(this).parent().attr('id'); 
    $attr = $(this).attr('data-attr'); 
    food[$name] = $attr; 
}); 

Вот что у меня есть код мудрый https://jsfiddle.net/fqyt18y7/

+0

мне нужно, чтобы связать имя пищи – Phreak

+0

фрукты -> яблоки, бананы ; spices -> chili, cajun Как создать это с помощью кода? – Phreak

+0

Не уверен, что вы пытаетесь сделать, но я обновил вашу скрипку с тех пор, как вы опубликовали ее. https://jsfiddle.net/fqyt18y7/5/ –

ответ

3

Working Fiddle

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

$('.options li').each(function() { 
    $name = $(this).parent().attr('id'); 
    $attr = $(this).attr('data-attr'); 

    // Check to see if this keyword has been used before 
    // because if not, we need to store an empty array there 
    if(typeof food[$name] === 'undefined'){ 
    food[$name] = []; 
    } 

    // Add our element to that array 
    food[$name].push($attr); 
}); 
+1

Спасибо, сэр. Это именно то, что я искал! – Phreak

+0

@Phreak Glad Я могу помочь! –

+0

Я приму ответ, как только это позволит мне (2 мин.) – Phreak

1

объект Javascript может содержать ключ, значение пары, но не один ключ, а несколько значений, как вы указали [{плоды: «яблоки», «бананы»}, {специи: 'chili', 'cajun'}].

Вместо этого, вы можете изменить значение в массив, который может содержать несколько элементов,

[{фрукты: [ 'яблоки', 'бананы' ]}, {специи: [ ' chili ',' cajun ']}].

Для достижения этой цели, вам нужно изменить

food[$name] = $attr; 

с

if (!food[$name]) { 
    food[$name] = [$attr]; 
    } else { 
    food[$name].push($attr); 
    } 

Hers это updated fiddle

+1

Получил его так, чтобы создать новый массив типа – Phreak

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