JavaScript (JQuery)修改参数名

JavaScript (JQuery) change name of parameter

本文关键字:参数 修改 JQuery JavaScript      更新时间:2023-09-26

是否可以更改JavaScript对象中参数的名称?

我的问题是,JQuery的AutoComplete是非常挑剔的参数名称,需要一个参数名称标签或值。

My data object.

data....
data.receivers[].id
data.receivers[].name
data....

我想做的是像这样创建一个别名/引用或类似的概念。

data.receivers[].label = data.receivers[].name

所以我想把一个参数从name改为label。我已经这样做了,但我不喜欢复制数据,我认为。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;
        }
    });
}

p。我可以改变JSON返回数据从我的服务器,但我想保持名称的逻辑和直观,而不是被迫根据JQuery的约束数据对象建模。

如果你想就地更新你的对象集合,你可以使用$.each()代替$.map():

$.each(data.receivers, function() {
    this.label = this.name;
    delete this.name;    
});
$("input#reciever").autocomplete({   // suggest $("#receiver") instead
     source: data.receivers,
     // ...
});