【问题标题】:Javascript Add Array Element to Dynamically Named IndexJavascript将数组元素添加到动态命名索引
【发布时间】:2015-11-21 00:29:44
【问题描述】:

给定

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;
}

谢谢!

【问题讨论】:

  • 我读到它是用于声明二维数组:stackoverflow.com/a/18163289/1503127
  • 您缺少=。而var x = [[]]; 只是在第一个索引中声明一个数组。
  • 是的,我现在知道我做错了什么。感谢您指出这一点

标签: javascript arrays variable-declaration


【解决方案1】:

如果outer 具有“property1”等值,则input 不是数组。它是一个对象。与 PHP 不同,Javascript 中没有关联数组。

试试:

var input = {};

是的,您需要在推送到它之前创建一个数组。您可以像这样在一个“也许存在,也许不存在”的步骤中做到这一点:

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

然后像以前一样推送:

input[outer].push(inner);

【讨论】:

猜你喜欢
  • 2017-05-25
  • 2016-02-09
  • 2012-07-23
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多