这是一个有点难受,口齿伶俐,但在PHP中,你可以这样说:

$myArray['someindex'] = "my string";

和如果没有索引命名,它会创建/分配的值,并且如果存在一个索引,它会覆盖现有的值。

比较这对那里的Javascript今天我必须做的检查,像这样:

if (!myObject[key]) myObject[key] = "value";

我知道这可能是有点挑剔一点,但有相对于更详细的(阅读:PITA)为PHP(和许多其他语言)做自己的这些检查的能力的名称方法的Javascript?

修改

我感到很困惑的苦恼。比方说,你要添加这种结构:

myobject = {
    holidays : {easter : {date : 4/20/2010,
                          religion : Christianity}
                holi : {date : 3/10/2010,
                        religion : hindu} 
}

我今天,我收到的表格数据出现了问题,我希望通过建立一个对象来把它变成一棵树有点像这样。

当我开始我的循环,我很难作出新的指数一样myobject['holidays'][thisVariable][date] = 4/20/2010如果树没有被大多建到了这一点。

我会从我的其他电脑抢了代码示例,如果这是不明确的,遗憾的穷人思维。

有帮助吗?

解决方案

我猜想 '自动vivification' http://en.wikipedia.org/wiki/Autovivification 从Perl的可能是相关的,但它比你描述的不同。 wiki页面有一个很好的总结。像Ruby其它语言支持对于尚未被分配的混杂键,其可以被用于自动vivification以及一个“默认动作”钩子。

例如,在红宝石:


>> h = Hash.new {|h,k| h[k] = {}}
=> {}
>> h["hello"]["world"] = 20
=> 20
>> h["hello"]["world"]
=> 20

其他提示

您是错误的。要分配一个值在JavaScript对象的关键,你不需要执行检查。该值将被分配是否已经存在针对键或不是一个值。

想一想。你怎么能过,如果你必须有一个价值有先取得值成一个对象或哈希?

JavaScript并完全一样的东西作为PHP这里:myObject的[键] =“值”如果存在将覆盖现有值。你能告诉我们你为什么不这么想?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top