Javascript 将嵌套数组转换为对象
这个嵌套数组可以是变量,所以将其转换为如下所示的对象Javascript 将嵌套数组转换为对象,javascript,arrays,json,object,arraylist,Javascript,Arrays,Json,Object,Arraylist,这个嵌套数组可以是变量,所以将其转换为如下所示的对象 [["seller" , [["id" , "1"], ["name", "test"]]], ["token", "aasfgsgd"], ["settings", [["general", false], ["store", [["
[["seller" , [["id" , "1"], ["name", "test"]]], ["token", "aasfgsgd"], ["settings", [["general", false], ["store", [["trusted", true], ["socialMedia", [["fbConnected", true], ["igConnected", false]]]]]]]]
您可以使用递归函数将所有嵌套的[[key,value],…]
对数组转换为对象本身
Object.fromEntries()
方法可以获取如下数组:
{
"seller": {
"id": 1,
"name": "test"
},
"token": "aasfgsgd",
"settings": {
"general": false,
"store": {
"trusted": true,
"socialMedia": {
"fbConnected": true,
"igConnected": false
}
}
}
}
。。。并将其转换为对象:
[["key", "val2"]]
但是,如果“val2”
本身是一个数组,则需要首先将其转换为对象。这可以通过递归调用数组值项上的Object.fromEntries()
来实现
见下例:
const arr=[[“卖方”、[[“id”,1]、“名称”、“测试”]]、[“令牌”、“aasfgsgd”]、[“设置”、[[“常规”,false]、“存储”、[[“受信任”,true]、“社交媒体”、[[“fbConnected”,true]、“igConnected”,false][;
const makeObject=arr=>{
返回Object.fromEntries(arr.map(
([key,val])=>Array.isArray(val)?[key,makeObject(val)]:[key,val]
));
}
log(makeObject(arr))代码>
const数组=[[“卖方”、[[“id”、“1”]、[“名称”、“测试”]]、[“令牌”、“aasfgsgd”]、[“设置”、[“常规”,false]、“存储”、[[“受信任”,true]、“社交媒体”、[[“fbConnected”,true]、“igConnected”,false][;
函数对象化(arr){
返回arr.reduce((附件,项目)=>{
让建筑商;
if(Array.isArray(项[0])){
生成器=对象化(项[0])
}否则{
const propName=项[0];
const propValue=Array.isArray(项[1])?objectify(项[1]):项[1];
生成器={[propName]:propValue};
}
返回{
…acc,
建设者
}
}, {});
}
log(objectify(数组))
如果我需要加密每个密钥的值并对其进行更改into@DeepanshuDemla在返回每个值之前,对其运行加密函数:…:[key,encryptionFunction(val)]
我也编辑了我的问题,你能帮我吗?@DeepanshuDemla你的问题是要一个带有加密值的对象输出。。。您想要数组还是对象。我已经添加了一种方法,可以根据您在question@DeepanshuDemla嗨,我知道你现在想要什么了。虽然这个问题与你的老问题有些关联,但它仍然是一个不同的问题。如果你有一个新问题,你可以发布一个新问题(而不是编辑旧问题),因为这使得你收到的两个答案对未来的读者来说毫无意义。我已将您的问题回滚到原始问题(请随意发布新问题)-您可以从中获取新问题的内容
{
"key": "val2"
}