Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Es6-如何在不循环的情况下更改obj道具名称?_Javascript_Es6 Class - Fatal编程技术网

Javascript Es6-如何在不循环的情况下更改obj道具名称?

Javascript Es6-如何在不循环的情况下更改obj道具名称?,javascript,es6-class,Javascript,Es6 Class,在es6中,我有一个数组 [{id:0,name:"a"},{id:1,name:"b"}] 我想在不映射或循环的情况下更改它的道具名称 [{value:0,label:"a"},{value:1,label:"b"}] 我可以使用alias-like函数吗?或任何其他替代方法 首先谢谢你 函数示例中的别名: 功能(id:标签){ …在此函数中,标签为id }您可以使用对象分解,Array.prototype.shift() let arr=[{id:0,名称:“a”},{id:0,名称

在es6中,我有一个数组

[{id:0,name:"a"},{id:1,name:"b"}]
我想在不映射或循环的情况下更改它的道具名称

 [{value:0,label:"a"},{value:1,label:"b"}]
我可以使用alias-like函数吗?或任何其他替代方法

首先谢谢你

函数示例中的别名: 功能(id:标签){ …在此函数中,标签为id
}

您可以使用对象分解,
Array.prototype.shift()

let arr=[{id:0,名称:“a”},{id:0,名称:“b”}];
设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()}];

控制台日志(arr)如果条目数可变,则可以使用代理

var thing=[{id:0,名称:“a”},{id:0,名称:“b”}]
var newThing=新代理(对象{
get:(target,name,receiver)=>!isNaN(parseInt(name))?({value:target[name].id,label:target[name].name}):target[name]
});
console.log(newThing[0])//对象{值:0,标签:“a”}
newThing.forEach(item=>console.log(item));
//对象{值:0,标签:“a”}

//对象{value:0,标签:“b”}
您所说的“别名”是什么意思?如果不执行该操作n次,就无法更改n个内容。@guest271314的可能重复:当然,很多人都希望这样。但这并不意味着它是可能的/合理的。。。你知道长度吗,它总是2(或其他一些固定数字)-如果不知道,那么你需要循环或使用黑色Majicki如果你有诸如“无映射或循环”之类的约束,那么你还必须告诉我们更多关于你的数据结构的信息。数组中最多只能有两个元素吗?对象总是只有这两个属性吗?这不是不必要的复杂吗?如果代码只适用于固定数量的元素,那么使用
arr=[{value:arr[0].id,label:arr[0].name},{value:arr[1].id,label:arr[1]
,只在一行中执行,岂不是既短又容易理解吗?@nnnnnnnn是的,您的方法更简洁。@nnnnnnnn,在使用单个默认参数时是否可能达到要求?根据最近的评论,
数组长度不确定
-因此,数组长度2的硬编码是不可能的work@JaromandaX对于输入数组的
.length
,可以扩展相同的模式。也就是说,为了满足“无循环”的要求,
索引
1
处对象的“值”
属性应该是
1
@guest271314-我很有信心问题的输入数据中有输入错误(应该是0和1,而不是0和0)。主题行询问的是更改属性名称,而不是值。(否则,它实际上只是(甚至更多地)猜测OP想要做什么。)我的回答涵盖了两种情况:p前瞻性思维,这是me@JaromandaX返回值是一个字符串,原始输入是一个数字。很容易修复@guest271314-你不这么认为吗-你当然仍然假设
value
是顺序位置(我现在修好了)