在数组中设置关联数组值

时间:2012-01-04 02:44:10

标签: javascript jquery

这看起来很简单,但我无法理解。

在PHP中,我可以这样做:

$number_children[reference_number - 1][$key] = value;

在Javascript中,我需要做同样的事情:在关联数组中设置一个值,该数组在普通数组中。

我试过这个:

number_children[reference_number - 1][key] = $(this).val();

这似乎不起作用。设置此值的简单方法是什么?

感谢您提前提供任何帮助。

4 个答案:

答案 0 :(得分:2)

您是否正在初始化阵列?:

number_children = [];
number_children[reference_number - 1] = {};
number_children[reference_number - 1][key] = $(this).val();

也许jsFiddle会帮助显示问题。

答案 1 :(得分:1)

在Javascript数组和"关联数组"是不同的。实际上,Javascript人员并没有使用术语"关联数组",他们称之为"对象" (或"哈希")。

所以,你可以这样做:

number_children[reference_number - 1] = {};
number_children[reference_number - 1][key] = $(this).val();

但是,由于length未设置,因此当您尝试迭代时会出现意外结果:

number_children[reference_number - 1] = [];
number_children[reference_number - 1][key] = $(this).val();

答案 2 :(得分:0)

JavaScript中没有关联数组这样的东西。

在PHP中,您只有数组,可以是数字,关联或混合。在JavaScript中,您有数组或对象。 JavaScript中的数组不是关联的。

如果number_children是一个对象数组,那么你的代码就完全没了问题。这意味着如果这是包含对象的数组,那么在您的示例中,该对象又具有名为key变量值的属性。

答案 3 :(得分:0)

tl; dr 发布实际问题代码(使用最少的必需上下文)包括任何错误消息和/或[意外]症状。


正如minitech所说:代码没有“明显”错误。

无论如何,我只是学会(TM)PHP has some form of auto-vivification。 JavaScript绝对自动生成。

因此,

$number_children[reference_number - 1][$key] = value;
假设$number_children$number_children[x]

在PHP中工作
  1. 尚未设定。
  2. 之前已被设置为“阵列”。
  3. 由于JS 这样工作,那么根据SpoonNZ或Sergio Tulentsev的答案,在使用[]运算符之前必须对象/数组显式创建 即可。 (参见他们的答案)。

    快乐的编码。