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 通过键和值(js)从另一个对象创建新对象_Javascript_Arrays_Object - Fatal编程技术网

Javascript 通过键和值(js)从另一个对象创建新对象

Javascript 通过键和值(js)从另一个对象创建新对象,javascript,arrays,object,Javascript,Arrays,Object,我有一个非常奇怪的任务要完成。基本上我有这样的物体: { a: 'abc', key1: 'someKeyOne', key2: 'someKeyTwo', value1: 'someValueOne', value2: 'someValueTwo', yetAnotherProperty: 'dadjsa' } 我的目标是从作为键和值的属性创建新对象,因此新对象将是: { someKeyOne: 'someValueOne', someKeyTwo

我有一个非常奇怪的任务要完成。基本上我有这样的物体:

{
   a: 'abc',
   key1: 'someKeyOne',
   key2: 'someKeyTwo',
   value1: 'someValueOne',
   value2: 'someValueTwo',
   yetAnotherProperty: 'dadjsa'
}
我的目标是从作为键和值的属性创建新对象,因此新对象将是:

{
  someKeyOne: 'someValueOne',
  someKeyTwo: 'someValueTwo',
}
在对象中可以有许多“非键”或“非值”属性,但
keyX
valueX
的数量始终相同。我尝试使用
Object.keys
并检查key
是否包含
key,然后检查value,但我无法从中创建新对象


有什么建议吗?

您可以使用
Object.entries
获取原始对象的键/值对。过滤键类似于“keyX”的键(使用正则表达式),并从对象中获取相应的“valueX”值。将键/值对映射到此新对。最后使用
对象从这些对中创建一个对象。fromEntries

让obj={a:'abc',key1:'someKeyOne',key2:'someKeyTwo',value1:'someValueOne',value2:'someValueTwo',yetAnotherProperty:'dadjsa'};
让result=Object.fromEntries(
Object.entries(obj.filter)([k])=>/^key\d+$/.test(k))
.map(([k,v])=>[v,obj[“值”+k.slice(3)])
);

控制台日志(结果)
您可以使用
Object.entries
获取原始对象的键/值对。过滤键类似于“keyX”的键(使用正则表达式),并从对象中获取相应的“valueX”值。将键/值对映射到此新对。最后使用
对象从这些对中创建一个对象。fromEntries

让obj={a:'abc',key1:'someKeyOne',key2:'someKeyTwo',value1:'someValueOne',value2:'someValueTwo',yetAnotherProperty:'dadjsa'};
让result=Object.fromEntries(
Object.entries(obj.filter)([k])=>/^key\d+$/.test(k))
.map(([k,v])=>[v,obj[“值”+k.slice(3)])
);

控制台日志(结果)
keyX和keyX,我想你是指keyX和Valuex为什么不能从中创建一个新对象?keyX和keyX,我想你是指keyX和Valuex为什么不能从中创建一个新对象?很遗憾,我不能使用object.fromEntries,因为项目中的ES版本:(见我的答案的补充。aa和最后一个,我很抱歉!如果我们想逆转这个过程怎么办?因此我们有了我们的目标,并想用形式key1、value1、key2等将其取回。你不应该问后续问题。你应该首先尝试,当你无法实现时,问一个适当的新问题,展示你的尝试。但好的,我补充道这是答案的一个片段。你欠我的。;-)很抱歉@trincot,只是试图在
Object.assign({},…
中的最后一个内使用扩展语法。可能吗?可能更短更清晰,我猜很遗憾,我无法使用Object.fromEntries,因为project中的ES版本:(见我的答案的补充。aa和最后一个,我很抱歉!如果我们想逆转这个过程怎么办?因此我们有了我们的目标,并想用形式key1、value1、key2等将其取回。你不应该问后续问题。你应该首先尝试,当你无法实现时,问一个适当的新问题,展示你的尝试。但好的,我补充道这是答案的一个片段。你欠我的。;-)很抱歉@trincot,只是试图在
Object.assign({},.
中的最后一个内使用扩展语法。可能吗?我想可能更短更清晰