Javascript 将存储数据转换为具有定义的键名ExtJS的对象
根据答案,我想将存储数据转换为对象,并定义键值。以下是我的相关代码:Javascript 将存储数据转换为具有定义的键名ExtJS的对象,javascript,object,extjs,key,store,Javascript,Object,Extjs,Key,Store,根据答案,我想将存储数据转换为对象,并定义键值。以下是我的相关代码: var recordArray = {}; var paramArray = []; store.each(function(record){ recordArray.comment = record.get("comment"); recordArray.datecreated = record.get("datecreated"); paramArray.push(recordArray); })
var recordArray = {};
var paramArray = [];
store.each(function(record){
recordArray.comment = record.get("comment");
recordArray.datecreated = record.get("datecreated");
paramArray.push(recordArray);
});
console.log(Ext.encode(paramArray));
但打印出来的只是存储区中的最后一个数据,其和与数据和匹配。假设列表视图中有两个数据,如下所示:
[{comment: a, datecreated:1-2-1999}, {comment: b, datecreated:2-2-1999}]
打印输出:
[{comment: b, datecreated:2-2-1999}, {comment: b, datecreated:2-2-1999}]
当然,我想要的是,paramArray包含listView的每个对象,而不仅仅是同一个对象。有什么想法吗?感谢您的帮助。试试这个
var paramArray = [];
store.each(function(record){
var recordArray = {};
recordArray.comment = record.get("comment");
recordArray.datecreated = record.get("datecreated");
paramArray.push(recordArray);
});
在代码中,您每次都会覆盖原始recordArray对象中的值,而不是创建新对象,而且由于对象在JavaScript中是通过引用传递的,paramArray[0]中的原始recordArray引用也会被修改。试试这个
var paramArray = [];
store.each(function(record){
var recordArray = {};
recordArray.comment = record.get("comment");
recordArray.datecreated = record.get("datecreated");
paramArray.push(recordArray);
});
在您的代码中,您正在覆盖原始recordArray对象中的值,而不是每次都创建一个新对象。由于对象在JavaScript中是通过引用传递的,因此paramArray[0]处的原始recordArray引用也会被修改