【发布时间】:2015-12-18 19:05:04
【问题描述】:
在一些 javascript 数组操作/更新方面苦苦挣扎。希望有人能帮忙。
我有一个数组:
array('saved_designs'=array());
Javascript JSON 版本:
{"saved_design":{}}
我将添加一个标签,以及相关的数组数据:
array("saved_designs"=array('label'=array('class'='somecssclass',styles=array(ill add more assoc elements here),'hover'=array(ill add more assoc elements here))))
Javascript 版本:
{"saved_designs":{"label":{"class":"someclass","style":[],"hover":[]}}}
我希望能够附加/修改这个数组。如果“标签”已经定义...然后循环遍历该元素的子数据...并更新。如果 'label' 不存在..然后将新数据集附加到 'saved_designs' 数组元素。
因此,如果未定义标签,请将以下内容添加到 'saved_designs' 元素:
array('label2' = array('class'=>'someclass2',styles=array(),'hover=>array()')
事情并没有像我预期的那样顺利。我不确定 [] 和 {} 的 javascript 表示法及其区别。
可能需要在提供答案时讨论这个问题....但是这是我目前拥有的一些代码来实现这一点:
//saveLabel = label the user chose for this "design"
if(isUnique == 0){//update
//ask user if want to overwrite design styles for the specified html element
if (confirm("Their is already a design with that label ("+saveLabel+"). Overwrite this designs data for the given element/styles?")) {
currentDesigns["saved_designs"][saveLabel]["class"] = saveClass;
//edit other subdata here...
}
}else{//create new
var newDesign = [];
newDesign[saveLabel] = [];
newDesign[saveLabel]["class"] = saveClass;
newDesign[saveLabel]["style"] = [];
newDesign[saveLabel]["hover"] = [];
currentDesigns["saved_designs"].push(newDesign);//gives error..push is not defined
}
jQuery("#'.$elementId.'").val(JSON.stringify(currentDesigns));
提前致谢。希望这很清楚。我会根据问题和 cmets 相应地更新。 肖恩
【问题讨论】:
-
这是通过 PHP 动态编写的 javascript...因此 jQuery("#'.$elementId.'") 部分...考虑到这一点...没有基本的语法错误.
-
在 JavaScript 中,
[]声明了一个以数字为键的数组,而{}声明了一个对象。对象具有可以像具有命名键的数组一样使用的键/属性。 -
-2 我做了什么?!?谢谢托尼...鉴于上面的例子,这个符号应该没问题。
-
不确定您为什么被否决...任何人,您都可以使用 obj.hasOwnProperty("key") 来检查属性是否存在,您可以分配新属性或覆盖现有属性
obj.key=value或obj["key"]=value。要更新一个值,您可以链接键(例如obj["key1"] ["key2"]=value)对不起,如果这不是超级相关。我在打电话,很难回答更长的问题。希望我能帮上忙!
标签: javascript arrays javascript-objects