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

将JavaScript多维对象转换为平面数组

将JavaScript多维对象转换为平面数组,javascript,object,Javascript,Object,我有这个javascript对象格式 { "draw": "", "columns": [ { "data": "userid", "name": "", "searchable": true, "search": { "value": "", "regex": false } } ] } 我需要做的是把它转换成一维物体 { "draw" : "", "columns[

我有这个javascript对象格式

{
  "draw": "",
  "columns": [
    {
      "data": "userid",
      "name": "",
      "searchable": true,
      "search": {
        "value": "",
        "regex": false
      }
    }
  ]
}
我需要做的是把它转换成一维物体

{ 
 "draw" : "",
 "columns[data]": "userid",
 "columns[name]": "",
 "columns[searchable]": "true",
 "columns[searchable][value]": "",
 "columns[searchable][regex]":"true"
}
主对象可以是多层,包含对象和数组


由于JS不是我的强项,所以我非常欣赏任何想法和建议

我认为您希望从
列中删除数组,并将其设置为0索引值

let测试={
“绘制”:“绘制”,
“栏目”:[
{
“数据”:“用户ID”,
“名称”:“,
“可搜索”:正确,
“搜索”:{
“价值”:“,
“regex”:假
}
}
]
}
test.columns=test.columns[0]

log(test)
我将使用一个递归函数,该函数接受原始对象的属性和该对象的路径。如果属性不是对象,则将值添加到路径,如果是,则迭代其属性并调用递归函数

var对象={
“绘制”:“绘制”,
“栏目”:[{
“数据”:“用户ID”,
“名称”:“,
“可搜索”:正确,
“搜索”:{
“价值”:“,
“regex”:假
}
}]
};
console.log(展平(对象));
函数展平(对象){
var result={};
内部展平(对象“”);
返回结果;
函数InnerFlant(对象、路径){
if(typeof object!==“object”| | object===null | | object instanceof Date)返回结果[path]=object;
如果(!Object.keys(Object.length)返回结果[path]=Object;
for(对象中的变量键){
InnerFlatte(对象[键],路径?(路径+“[”+键+“]”:键);
}
}

}
结果不应该是
列[0][searchable][regex]:
而不是
列[searchable][regex]
?这不是一个XY问题吗?你为什么要做这件事?在我看来,这可能是一个试图解决一些你没有告诉我们的其他问题的方法。在得到一个只有一个级别的对象后,你会怎么做?为什么没有数组的索引?你怎么知道原始数据来自一个数组?这不是OP的意思wants@ThumChoonTat好的,我想删除我的答案,虽然我的帐户是客人,所以我可以谢谢。我用了你的一些逻辑和这个参考。在此处创建了此答案的另一个版本