Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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中传播时替换对象中的键_Javascript_Object_Spread - Fatal编程技术网

在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
}
我想有一个新的对象,它将包含所有键作为object
obj
,但不是一个特定的键,我想用另一个键替换它,比如我想省略键
'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}
这里有一个oneliner
constobj2=({a:newA,…rest})=>({newA,…rest}))(obj