对象的Arrray在key中存储相同的属性

时间:2016-02-04 02:04:41

标签: javascript jquery

我正在创建一个javascript对象数组。在对象内部,我想要一个键,该键具有与该键在同一个桶中相关联的所有属性。

例如食物[{fruits:' apples',' bananas'},{spices:' chili',' cajun'} ]

如果密钥是唯一的,则添加到阵列,否则只需放在同一个桶中。

以下代码

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

以下是我的代码明智https://jsfiddle.net/fqyt18y7/

2 个答案:

答案 0 :(得分:3)

<强> Working Fiddle

要实现此目的,您需要使用其元素的数组存储每个关键字。这样的事情可以解决问题:

Factory

答案 1 :(得分:1)

Javascript对象可以包含键值对,但不能包含一个键和多个值,就像您指定的那样[{fruits:&#39; apples&#39;,&#39; bananas&#39;},{spices:&# 39;辣椒&#39;,&#39; cajun&#39;}。

相反,您可以将值更改为可包含多个元素的数组

[{fruits: [&#39; apples&#39;,&#39; bananas&#39; ] },{spices: [< / strong>&#39;辣椒&#39;,&#39; cajun&#39; ] }]。

要实现这一目标,您需要更改

 food[$name] = $attr;

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

她是updated fiddle