Es6-如何在不循环的情况下更改 obj 道具名称?
Es6- how change obj props name without looping?
在 es6 中我有一个像
这样的数组
[{id:0,name:"a"},{id:1,name:"b"}]
我想在不映射或循环的情况下更改其道具名称
[{value:0,label:"a"},{value:1,label:"b"}]
我可以使用类似函数的别名吗?或任何其他替代方法?
首先感谢;
函数示例中的别名:
功能(ID:标签){
...在这个函数标签中作为 id
}
你可以使用对象解构,Array.prototype.shift()
let arr = [{id:0,name:"a"},{id:0,name:"b"}];
let res = [];
([{id:res[res.length], name:res[res.length]}
, {id:res[res.length], name:res[res.length]}] = arr);
arr = [{value:res.shift(), label:res.shift()}
, {value:res.shift() + 1, label:res.shift()}];
console.log(arr);
如果条目数量可变,您可以使用 Proxy
var thing = [{id:0,name:"a"},{id:0,name:"b"}]
var newThing = new Proxy(thing, {
get: (target, name, receiver) => !isNaN(parseInt(name)) ? ({value:target[name].id, label:target[name].name}) : target[name]
});
console.log(newThing[0]); //Object { value: 0, label: "a" }
newThing.forEach(item => console.log(item));
//Object { value: 0, label: "a" }
//Object { value: 0, label: "b" }
如果 value
是序数位置(如您的示例 input/output 所暗示)
var newThing = new Proxy(thing, {
get: (target, name, receiver) => !isNaN(parseInt(name)) ? ({value:parseInt(name), label:target[name].name}) : target[name]
});
在 es6 中我有一个像
这样的数组[{id:0,name:"a"},{id:1,name:"b"}]
我想在不映射或循环的情况下更改其道具名称
[{value:0,label:"a"},{value:1,label:"b"}]
我可以使用类似函数的别名吗?或任何其他替代方法?
首先感谢;
函数示例中的别名: 功能(ID:标签){ ...在这个函数标签中作为 id }
你可以使用对象解构,Array.prototype.shift()
let arr = [{id:0,name:"a"},{id:0,name:"b"}];
let res = [];
([{id:res[res.length], name:res[res.length]}
, {id:res[res.length], name:res[res.length]}] = arr);
arr = [{value:res.shift(), label:res.shift()}
, {value:res.shift() + 1, label:res.shift()}];
console.log(arr);
如果条目数量可变,您可以使用 Proxy
var thing = [{id:0,name:"a"},{id:0,name:"b"}]
var newThing = new Proxy(thing, {
get: (target, name, receiver) => !isNaN(parseInt(name)) ? ({value:target[name].id, label:target[name].name}) : target[name]
});
console.log(newThing[0]); //Object { value: 0, label: "a" }
newThing.forEach(item => console.log(item));
//Object { value: 0, label: "a" }
//Object { value: 0, label: "b" }
如果 value
是序数位置(如您的示例 input/output 所暗示)
var newThing = new Proxy(thing, {
get: (target, name, receiver) => !isNaN(parseInt(name)) ? ({value:parseInt(name), label:target[name].name}) : target[name]
});