我想在javascript JSON数组的开头添加一个key->值对,如下所示:
var temp = new Array();
temp = {
['LABEL_ID': 10, 'LABEL_TYPE': A3],
['LABEL_ID': 17, 'LABEL_TYPE': A6]
}
我想做什么:
var temp = new Array();
temp = {
'PAPER': A80
['LABEL_ID': 10, 'LABEL_TYPE': A3],
['LABEL_ID': 17, 'LABEL_TYPE': A6]
}
你可以帮我吗?
修改 这是我的代码:
// returns paper type from selected grid line
var ppt = Ext.getCmp('labelType').getValue();
// returns selected grid rows
var rows = Ext.getCmp('labelGrids').getSelectionModel().getSelection();
// here is my array that I want to add ppt variable value to existing array, then I will convert this to a JSON array
for (var i = 0; i < count; i++)
{
prints[i] = {'LABEL_ID': rows[i].data.LABEL_ID, 'LABEL_TYPE':rows[i].data.LABEL_TYPE}
}
原因是在数组的开头添加ppt
值,我需要在服务器端使用此记录。因此,我不想在所有方面重复!
答案 0 :(得分:2)
如果你这么倾向我会说这是你的选择。
你的javascript语法是无效的。
您希望将“标签”对象添加到数组中,然后将temp
分配给覆盖刚刚创建的数组的新对象。
如果要添加到数组,则必须使用方法.push()
像这样:
labelArray.push({'LABEL_ID': '10', 'LABEL_TYPE': 'A3'});
labelArray.push({'LABEL_ID': '17', 'LABEL_TYPE': 'A6'});
否则这可能是指向正确方向的指针
var labelArray = new Array({'LABEL_ID': 10, 'LABEL_TYPE': A3},
{'LABEL_ID': 17, 'LABEL_TYPE': A6});
var paper = {
papertype : A80,
labels : labelArray
}
但它既不好也不干净但它适合你。
答案 1 :(得分:2)
嗯,我希望你的问题意味着这个脚本:
要回答您编辑的问题,一个简单的方法是将其包装在另一个对象中:
var temp = new Array();
temp = [
{"LABEL_ID": 10, "LABEL_TYPE": "A3"},
{"LABEL_ID": 17, "LABEL_TYPE": "A6"}
]
// wrap temp in another object;
var obj = {};
obj.PAPER = A80;
obj.Data = temp;
//And convert to json.
console.log(JSON.stingify(obj));
输出:
{"PAPER":"A80","Data":[{"LABEL_ID":10,"LABEL_TYPE":"A3"},{"LABEL_ID":17,"LABEL_TYPE":"A6"}]}
希望这会有所帮助。调用该函数将为您的对象添加所需的proptery
var temp = new Array();
temp = [
{"LABEL_ID": 10, "LABEL_TYPE": "A3"},
{"LABEL_ID": 17, "LABEL_TYPE": "A6"}
]
addPaperProperty(temp, 'PAPER', ['AA','BB']);
function addPaperProperty(currentArray, newPropertyField, newPropertyArr){
var newArray = [];
var i=0;
$(temp).each(function(){
this[newPropertyField] = newPropertyArr[i++];
newArray.push(this);
});
console.log(newArray);
return newArray;
}
结果将是
[{LABEL_ID: 10, LABEL_TYPE: "A3", PAPER: "AA"},
{LABEL_ID: 17, LABEL_TYPE: "A6", PAPER: "BB"}]
答案 2 :(得分:1)
这是不数组。这种变量的类型称为哈希表,因为它定义了键/值对。
实际回答之前的一些要点:
因此,为了使您的代码有效,您可以拥有这样的东西:
temp = {
'PAPER': 'A80',
'LABELS': [{'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
{'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}]
};
这将添加普通键/值对,然后添加一个键,其值为哈希表数组。
要访问特定标签,您可以使用以下代码:
var id = temp["LABELS"][1]["LABEL_ID"];
请注意,JavaScript区分大小写,因此大小写在密钥名称中非常重要,这意味着temp["paper"]
将返回 undefined 。
答案 3 :(得分:1)
您的对象在整个地方似乎无效:
外括号应为方形:[ ]
,如果你真的希望它是一个数组,那么内部括号是{ }
,因为它们是对象。
此外,除非A3
和A6
是您之前定义的变量,否则您需要将它们括在撇号中,因为它们是字符串:
var temp = [
{'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
{'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
]
现在,如果您想在数组中添加属性,那么最好这样做:
var temp = [
{'PAPER': 'A80'},
{'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
{'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
]
或者,将temp
设为对象,而不是:
var temp = {
'PAPER':'A80',
'labels':[
{'LABEL_ID': 10, 'LABEL_TYPE': 'A3'},
{'LABEL_ID': 17, 'LABEL_TYPE': 'A6'}
]
}
(在对象中,你总是有一个key:value
关系,在数组中,你从来没有。
答案 4 :(得分:-1)
嗨,这是一个有效的JSON对象
temp = {
'PAPER': A80, 'LIST' : {
['LABEL_ID': 10, 'LABEL_TYPE': A3],
['LABEL_ID': 17, 'LABEL_TYPE': A6]
}
}