将项添加到javascript数组

时间:2010-09-06 14:49:34

标签: javascript jquery arrays object

我正在尝试在用户操作上为数组分配项目,例如,用户单击“添加”,这会将选定的ID添加到数组的相关部分。

首先不会创建数组,所以我设置了一个空数组:

var Options={};

在用户点击后,我想分配一个键以匹配从下拉列表中选择的选项,以便稍后我可以将其作为参考。

E.g。当用户在记录上单击加号时,从下拉列表中选择的选项为2.他们选择的记录的ID为5。

我想像下面那样构建我的数组: -

[键例如下拉选项]      => 'records'=>数组[record_id]

每次用户点击记录旁边的加号时,都会根据下拉选择选项将ID附加到正确的数组。

[option 1] => 'publication_date' = 12/09/2010, 'records' => [1, 2, 4]
[option 2] => 'publication_date' = 15/09/2010, 'records => [1, 3, 5]

等,选择框中的每个选项都有一个发布日期和一系列用户可以分配给它的记录。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

function AddItem(key, value)  {
   if(Options[key]) Options[key].push(value);
   else Options[key] = [value];
}

例如,这样做:

​AddItem(2, 5);
AddItem(2, 6);

会导致Options

{ 2: [5, 6] }

You can give it a try/play with it here

答案 1 :(得分:0)

javascript中的对象可以存储一个关键数据集,而不是各种键。

即: var records = {'12/09/2010':[1, 2, 4], '15/09/2010':[1, 3, 5]}

获取15/09的记录:records['15/09/2010']
为日期添加新记录:records['15/09/2010'].push(6)

如果日期改变,您需要执行以下操作:
records['17/09/2010'] = records['15/09/2010']; delete records['15/09/2010']

用户无法同时更改两者(日期和添加),您应该分别更新两个操作。


现在,如果您计划拥有更多密钥,则应使用对象数组:

var records = [
  {publication_date:'12/09/2010', records:[1, 2, 4], ..., otherProp='...'},
  ...
];

对于每个更改,循环数组,找到相关项并进行更改。