Javascript 将数组元素添加到动态命名索引

Javascript Add Array Element to Dynamically Named Index

给出

var input[[]];

$('some_selector').each(function() {
   var outer, inner; 
   outer=$(this).parent().attr('some_property');
   inner=$(this).attr('a_property');
   input[outer].push(inner);
});

push 函数执行过程中遇到错误。是不是因为具体的 input[outer] 没有声明为数组?

另外,outer的值不一定是排序的。因此在循环中,outer 可以依次具有以下值:"property1"、"property2"、"property1"、"property3"、"property2" ...

用 PHP 术语来说,是否有等价于:

foreach () {
    $input[$outer][]=$inner;
}

谢谢!

如果 outer 具有 "property1" 等值,则 input 不是数组。它是一个对象。与 PHP 不同,Javascript.

中没有关联数组

尝试:

var input = {};

是的,您需要先创建 一个数组,然后再推送到它。您可以像这样 "maybe it exists, maybe it doesn't" 一步完成:

input[outer] = input[outer] || [];

然后像以前一样推送:

input[outer].push(inner);