Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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,我有一个奇怪的需求,需要将一个有效的javascript数组转换成另一个javascript对象 我得到的是这种格式的服务器响应 { "buyerPrimary.firstName":["The buyer primary.first name field is required."], "buyerPrimary.lastName":["The buyer primary.last name field is required."] } 我希望将此数组更改为此格式 { "buyerP

我有一个奇怪的需求,需要将一个有效的javascript数组转换成另一个javascript对象

我得到的是这种格式的服务器响应

{
"buyerPrimary.firstName":["The buyer primary.first name field is required."],
"buyerPrimary.lastName":["The buyer primary.last name field is required."]
}
我希望将此数组更改为此格式

{
    "buyerPrimary":{
        "firstName":["The buyer primary.first name field is required."],
        "lastName":["The buyer primary.last name field is required."]
    }
}

我仍然在JavaScript中苦苦挣扎,经过数小时的搜索和尝试,我一直没有成功。非常感谢您的帮助。

只需使用操作符
[…]
即可获取对象属性

var sourceObject = {
  "buyerPrimary.firstName":["The buyer primary.first name field is required."],
  "buyerPrimary.lastName":["The buyer primary.last name field is required."]
};
var destinationObject = {
  "buyerPrimary":{
    "firstName":sourceObject["buyerPrimary.firstName"],
    "lastName":sourceObject["buyerPrimary.lastName"]
  }
};

您拥有的是一个对象,而不是数组

您可以使用来获取对象自身属性名称的数组,然后使用来迭代该数组以创建新对象。下面的代码应该有足够的注释,如果没有,请提问

var数据={
“buyerPrimary.firstName”:[“需要买方primary.firstName字段。”],
“buyerPrimary.lastName”:[“需要买方primary.lastName字段。”]
}
var res=Object.keys(数据).reduce(函数(obj,key,idx){
//将键拆分为属性名称
var props=key.split('.');
//如果累加器对象还没有合适的属性,
//创造它
如果(!obj.hasOwnProperty(props[0])){
obj[props[0]]={};
}
//添加属性和值
obj[props[0]][props[1]]=数据[key];
//返回累加器对象以继续收集属性
返回obj;
//使用空对象作为累加器初始化
}, {});
//显示结果

document.write(JSON.stringify(res))如果您发布到目前为止尝试过的内容,则更有可能获得帮助。您的对象不是数组。数组由
[…]
定义。对象由
{…}