在Javascript中传播时替换对象中的键
我有下面的目标在Javascript中传播时替换对象中的键,javascript,object,spread,Javascript,Object,Spread,我有下面的目标 const obj = { 'a': 1, 'b': 2, 'c': 3, 'd': 4, . . . . 'z': 26 } 我想有一个新的对象,它将包含所有键作为objectobj,但不是一个特定的键,我想用另一个键替换它,比如我想省略键'a',并用'new\u a'替换它。下面的方法不会删除原始密钥'a'。有没有一种方法可以通过别名来实现它?或者删除键'a'是唯一的选择 const obj2 = { ...obj, 'new
const obj = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
.
.
.
.
'z': 26
}
我想有一个新的对象,它将包含所有键作为objectobj
,但不是一个特定的键,我想用另一个键替换它,比如我想省略键'a'
,并用'new\u a'
替换它。下面的方法不会删除原始密钥'a'
。有没有一种方法可以通过别名来实现它?或者删除键'a'
是唯一的选择
const obj2 = {
...obj,
'new_a': 111
}
我想这样-
{
'new_a': 111,
'b': 2,
'c': 3,
.
.
.
.
'z': 26
}
我想不出一个方法可以一步完成(当然是一行,但不是一步)。使用rest和赋值进行分解可以很好地实现这一点:
const {a, ...obj2} = obj;
obj2.new_a = obj.a; // Or just `= a;`, either way
实例:
const obj={
"a":1,,
“b”:2,
"c":3,,
"丁":四,,
// ...
“z”:26
};
常数{a,…obj2}=obj;
obj2.new_a=obj.a;
console.log(obj2)编码>如果您不希望新的\u a具有与a相同的值,则:
const obj2 = { ...obj, new_a: 111 };
delete obj2["a"];
也许不是最干净的方法,但只有一条班轮:
const obj={
"a":1,,
“b”:2,
"c":3,,
"丁":四,,
“z”:26
}
设obj2={
“新a”:111,
…Object.fromEntries(Object.entries(obj.filter)([key])=>key!=='a'))
};
console.log(obj2)代码>您可以使用iife和对象rest spread操作符收集除重命名属性外的所有属性,并将它们添加到新对象中。
供参考
constobj2=({a:newA,…rest})=>({newA,…rest}))(obj)
<> P>出于可读性的缘故,您可能需要考虑编写适配器函数,它很好地描述了对象属性的转换。
constobj={a:1,b:2,c:3,d:4};
常量适配器=({a:newA,…rest})=>({newA,…rest});
常数obj2={
…适配器(obj),
}
console.log(obj2)
如果它们的键不需要是new_a
您可以简单地覆盖它,就像constobj2={…obj,'a':111}
这里有一个onelinerconstobj2=({a:newA,…rest})=>({newA,…rest}))(obj