JavaScript(JQuery)更改参数名称

时间:2011-11-14 15:13:35

标签: javascript jquery

是否可以更改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的约束强制按数据对象建模。

1 个答案:

答案 0 :(得分:3)

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

$.each(data.receivers, function() {
    this.label = this.name;
    delete this.name;    
});

$("input#reciever").autocomplete({   // suggest $("#receiver") instead
     source: data.receivers,
     // ...
});