Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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_Arrays_Object - Fatal编程技术网

Javascript 从数组转换为正确的对象格式

Javascript 从数组转换为正确的对象格式,javascript,arrays,object,Javascript,Arrays,Object,在将数组转换为对象时,我知道诸如spread运算符和Object.assign()之类的选项,但是,我很难确定如何将最终对象格式化为所需的格式 我的原始阵列如下所示: let propsArray = [ { id: '1' }, { 'name.first': 'john' }, { 'name.last': 'smith' } ] { "id" : 1, "name" : { "first" : "john", "last" : "smith"

在将数组转换为对象时,我知道诸如spread运算符和Object.assign()之类的选项,但是,我很难确定如何将最终对象格式化为所需的格式

我的原始阵列如下所示:

let propsArray = [ { id: '1' },
  { 'name.first': 'john' },
  { 'name.last': 'smith' } ]
{
  "id" : 1,
  "name" : {
      "first" : "john",
      "last" : "smith"
  }
}
我希望从该数据中获取的对象如下所示:

let propsArray = [ { id: '1' },
  { 'name.first': 'john' },
  { 'name.last': 'smith' } ]
{
  "id" : 1,
  "name" : {
      "first" : "john",
      "last" : "smith"
  }
}
到目前为止,我尝试使用object.assign()在结果对象中添加数字作为属性键,这显然不是我想要的:

  let finalObj = Object.assign({}, propsArray);

如何按此处所需的方式格式化生成的对象?

您需要更深入地查看对象,使用拆分键,并通过使用具有属性的对象或空对象来减少它们。在末尾指定值

var data=[{id:'1'},{'name.first':'john'},{'name.last':'smith'}],
结果=数据。减少((r,o)=>{
Object.entries(o.forEach)([k,v])=>{
var keys=k.split('.'),
last=keys.pop();
reduce((q,k)=>q[k]=q[k]|{},r)[last]=v;
});
返回r;
}, {});
控制台日志(结果)请尝试以下操作:

const数据=[
{
“id”:“1”
},
{
“名字。第一个”:“约翰”
},
{
“姓名。姓氏”:“史密斯”
}
]
const result=Object.entries(Object.assign({},…data))
.减少((根据[k,v])=>{
[first,last]=k.split('.');
如果(!last){
acc[k]=v
}否则{
acc[第一]=acc[第一]|{};
acc[第一次][最后一次]=v;
}
返回acc
}, {})

控制台日志(结果){propertyName:'id',value:1},{propertyName:'first.name',value:'john这样的事情,
它会大大降低复杂性。甚至从一开始就使用对象而不是数组