是否可以更改JavaScript对象中参数的名称?
我的问题来自于JQuery AutoComplete对参数名称非常挑剔,并且需要参数名称标签或值。
我的数据对象。
data....
data.receivers[].id
data.receivers[].name
data....
我想做的是制作一个别名/参考或类似的概念。
data.receivers[].label = data.receivers[].name
所以我想将名称中的参数更改为标签。我这样做了,但我不想复制我相信.map的数据。
var callBack = function(data) {
var autoCompleteData = jQuery.map(data.receivers, function(receiver, i){
return {label: receiver.name, id: receiver.id };
});
$("input#reciever").autocomplete({
source: autoCompleteData,
focus: function(event, receiver) {
$("input#reciever").val(receiver.item.label);
return false;
},
select: function(event, receiver) {
$("input#reciever").val(receiver.item.label);
$("input#recieverId").val(receiver.item.id);
return false;
}
});
}
聚苯乙烯。我可以从服务器更改JSON返回数据,但我希望保持名称的逻辑性和直观性,而不是根据JQuery的约束强制按数据对象建模。
答案 0 :(得分:3)
如果您想就地更新对象集,可以使用$.each()代替$.map()
:
$.each(data.receivers, function() {
this.label = this.name;
delete this.name;
});
$("input#reciever").autocomplete({ // suggest $("#receiver") instead
source: data.receivers,
// ...
});