动态合并值到对象属性 - 首先是未定义的

时间:2014-12-04 12:00:44

标签: javascript php javascript-objects

我有一个php生成的javascript代码,可以动态地将属性和值添加到对象中。它看起来像这样:

 var javascriptObject = {};

 <?php
 foreach($events as $event)
      echo 'javascriptObject[$event->date] += $event->title';
 endforeach
 ?>

由于我可能在同一个日期有多个事件,它会添加到同一个对象属性,然后由外部日历库处理。现在,一切正常。但是,因为它添加了+ =第一个&#34;未定义的新数据&#34;值始终保持在每个条目的开头。

我的问题是,Javascript中是否有一种方法可以使用默认值(空值或空值)初始化对象,而不是将其保留为“未定义”#?有人能指出我更好的解决方案吗?

ps:我真的很想避免检查未定义的&#39;在每个循环中保持代码干净,因为它是一个php生成的javascript,当事件列表很大时会完全搞乱。

1 个答案:

答案 0 :(得分:1)

试试:

foreach ($events as $event) {
  echo 'javascriptObject[' . $event->date . '] = (javascriptObject[' . $event->date . '] || "") + "' . $event->title . '";';
}

甚至更安全的方式:

$javascriptObject = array();
foreach ($events as $event) {
  if ( !isset($javascriptObject[ $event->date ]) ) {
    $javascriptObject[ $event->date ] = '';
  }
  $javascriptObject[ $event->date ] .= $event->title;
}

echo 'var javascriptObject = ' . json_encode($javascriptObject) . ';';