这对我来说有点难以表达,但在PHP中你可以这样说:
$myArray['someindex'] = "my string";
如果没有名称的索引,它将创建/分配值,如果有索引,它将覆盖现有值。
将此与Javascript进行比较,今天我必须做这样的检查:
if (!myObject[key]) myObject[key] = "value";
我知道这可能有点挑剔,但有一个PHP(和许多其他语言)能够自己进行这些检查的能力的名称,而不是更详细(读取:PITA)方法Javascript?
修改
我很困惑地问这个问题。假设您要添加到此结构中:
myobject = {
holidays : {easter : {date : 4/20/2010,
religion : Christianity}
holi : {date : 3/10/2010,
religion : hindu}
}
今天我遇到了一个问题,我收到了表格数据,我希望通过构建一个对象将它放入树中。
当我开始循环时,我很难制作像myobject['holidays'][thisVariable][date] = 4/20/2010
这样的新索引,如果树基本上没有建立到这一点。
如果不清楚的话,我会从我的另一台计算机上获取一个代码示例,对不起的想法感到抱歉。
答案 0 :(得分:6)
你错了。要在javascript中为对象的键指定值,您不需要执行该检查。将分配该值是否已存在该键的值。
想一想。如果你必须首先得到一个值,你怎么能把值放到一个对象或哈希?
答案 1 :(得分:4)
我认为来自Perl的'自动生成'http://en.wikipedia.org/wiki/Autovivification可能是相关的,但它的工作方式与您描述的不同。维基页面有一个很好的总结。其他语言(如Ruby)支持尚未分配的哈希键的“默认操作”钩子,也可用于自动生成。
例如,在Ruby中:
>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20
答案 2 :(得分:1)
Javascript与PHP完全相同:myObject [key] =“value”将覆盖现有值(如果存在)。你能告诉我们为什么你会这么想吗?