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"
}