Javascript 如何通过更改对象键名称来修改对象数组响应
对于下面的例子,source是一个函数,它的第二个参数是response,response也是一个回调函数,如果$.getJSON请求成功,则会执行该回调函数,从而在假定/devices端点以正确的格式提供数据的情况下正确执行Javascript 如何通过更改对象键名称来修改对象数组响应,javascript,callback,Javascript,Callback,对于下面的例子,source是一个函数,它的第二个参数是response,response也是一个回调函数,如果$.getJSON请求成功,则会执行该回调函数,从而在假定/devices端点以正确的格式提供数据的情况下正确执行 $( "#devices" ).autocomplete({ source: function(request, response) { $.getJSON("/devices", { id: 123, term: request.term },
$( "#devices" ).autocomplete({
source: function(request, response) {
$.getJSON("/devices", { id: 123, term: request.term }, response);
}
});
/devices路由将返回类似[{id:321,name:'The first name'},…]的内容,但是格式不正确
$( "#devices" ).autocomplete({
source: function(request, response) {
$.getJSON("/devices", { id: 123, term: request.term }, response);
}
});
我如何修改它,以便将接收到的数据对象键从名称更改为值,从而使源为[{id:321,value:'the name'},…]?我想您可以使用array.forEach循环响应数组
response.forEach(e => {
e.value = e.name;
delete e.name;
});
您可以将回调更改为自己的函数,该函数将修改检索到的数据的格式,然后使用修改后的数据调用响应:
$("#devices").autocomplete({
source: function(request, response) {
$.getJSON("/devices", {id: 123, term: request.term}, function(data) {
const new_data = data.map(({name: value, ...r}) => ({value, ...r}));
response(new_data);
});
}
});
上面,.map使用并将其重命名为value来提取name属性。…r使用和从原始对象提取剩余的键/值。因此r是一个对象,它包含给定元素的name属性以外的所有内容。然后,该函数返回一个新对象,用于将值设置为键,其内容为实际值,并与对象的其余部分合并,因此…r用于将对象r的键/值分散/合并到新创建的键/值中-其行为类似于对象。assign,我正沿着这条路走,但没有用修改过的数据做最后的呼叫响应,也没有使用。。。。偏离主题,但请您解释一下.map是如何工作的,重点是。。。你在干什么?@user1032531别担心。我已经更新了我的答案,加入了关于.map如何工作的解释。我目前在手机上,所以当我可以访问桌面时,我可能会编辑它以使其清晰