Javascript 如何将多个对象按顺序推入一个对象

Javascript 如何将多个对象按顺序推入一个对象,javascript,arrays,json,object,Javascript,Arrays,Json,Object,我在一个变量中有两个或多个对象,我想将这些对象推到一个对象中 let a = {"device_type":"iphone","filter_data":{"title":{"value":"Lorem Ipsum..","data":{}},"message":{"value":"Lorem Ipsum is simply dummy text of the printing...","data":{}},"dismiss_button":{"value":"Ok","data":{}},"a

我在一个变量中有两个或多个对象,我想将这些对象推到一个对象中

let a = {"device_type":"iphone","filter_data":{"title":{"value":"Lorem Ipsum..","data":{}},"message":{"value":"Lorem Ipsum is simply dummy text of the printing...","data":{}},"dismiss_button":{"value":"Ok","data":{}},"action_url":{"value":"","data":{"type":"custom"}}}}

{"device_type":"iphone","filter_data":{"message":{"value":"Push Message goes here.","data":{}}}}
我希望输出为:

{
  "0": {
    "device_type": "iphone",
    "filter_data": {
      "title": {
        "value": "Lorem Ipsum..",
        "data": {}
      },
      "message": {
        "value": "Lorem Ipsum is simply dummy text of the printing...",
        "data": {}
      },
      "dismiss_button": {
        "value": "Ok",
        "data": {}
      },
      "action_url": {
        "value": "",
        "data": {
          "type": "custom"
        }
      }
    }
  },
  "1": {
    "device_type": "iphone",
    "filter_data": {
      "message": {
        "value": "Push Message goes here.",
        "data": {}
      }
    }
  }
}

我怎样才能做到这一点呢?

如果它们在一个数组中,这相当简单-只需使用
reduce

const data=[{“设备类型”:“iphone”,“过滤器数据”:{“title”:{“value”:“Lorem Ipsum…”,“data”:{}},“message”:{“value”:“Lorem Ipsum只是打印的虚拟文本…”,“data”:{},“dismise”按钮:{“value”:“Ok”,“data”:{}},“action\u url”:{“value”:“data”:{“data”:{“type”:“custom type”},{“设备类型”:“iphone“推送消息到这里。”,“数据”:{}}];
const res=data.reduce((a,c,i)=>(a[i]=c,a),{});
console.log(res);

.as控制台包装{max height:100%!important;top:auto;}
如果它们在一个数组中,则非常简单-只需使用
reduce

const data=[{“设备类型”:“iphone”,“过滤器数据”:{“title”:{“value”:“Lorem Ipsum…”,“data”:{}},“message”:{“value”:“Lorem Ipsum只是打印的虚拟文本…”,“data”:{},“dismise”按钮:{“value”:“Ok”,“data”:{}},“action\u url”:{“value”:“data”:{“data”:{“type”:“自定义”}},{“设备类型”:“iphone推送消息在这里。”,“数据”:{}}];
const res=data.reduce((a,c,i)=>(a[i]=c,a),{});
console.log(res);

.as console wrapper{max height:100%!important;top:auto;}
您可以使用
Array.prototype.match
来分离每个对象,然后
Array.prototype.reduce
来获得预期的对象

让a='{“设备类型”:“iphone”,“过滤数据”:{“标题”:{“值”:“Lorem Ipsum…”,“数据”:{}},“消息”:{“值”:“Lorem Ipsum只是打印的伪文本…”,“数据”:{},{},“关闭按钮”:{“值”:“确定”,“数据”:{}},“操作url”:{“值”:“数据”:{“类型”:“自定义”}{“设备类型”:“iphone”,“过滤数据”:{“消息值”:推送消息放在这里。“,“数据”:{}};
让objects=a.match(/({“设备类型”。*?}}})/g.map(e=>JSON.parse(e));
console.log('对象数组',对象)
const out={…[objects]};

console.log(“\n所需的输出”,out)
您可以使用
Array.prototype.match
来分离每个对象,然后
Array.prototype.reduce
来获得所需的对象

让a='{“设备类型”:“iphone”,“过滤数据”:{“标题”:{“值”:“Lorem Ipsum…”,“数据”:{}},“消息”:{“值”:“Lorem Ipsum只是打印的伪文本…”,“数据”:{},{},“关闭按钮”:{“值”:“确定”,“数据”:{}},“操作url”:{“值”:“数据”:{“类型”:“自定义”}{“设备类型”:“iphone”,“过滤数据”:{“消息值”:推送消息放在这里。“,“数据”:{}};
让objects=a.match(/({“设备类型”。*?}}})/g.map(e=>JSON.parse(e));
console.log('对象数组',对象)
const out={…[objects]};

log(“\n所需的输出”,out)
您可以将
}{
替换为
},{
,对其进行解析,并从数组中获取索引为属性的对象

const
数据={“设备类型”:“iphone”,“过滤器数据”:{“标题”:{“值”:“Lorem Ipsum…”,“数据”:{},“消息”:{“值”:“Lorem Ipsum”只是打印的伪文本…”,“数据”:{},“关闭按钮”:{“值”:“确定”,“数据”:{}},“操作url”:{“值”:“数据”:{“类型”:“自定义”}{“设备类型”:“iphone”,“过滤器数据”:{“消息”:{推送消息放在这里。“,“数据”:{}};
result=Object.assign({},JSON.parse(`[${data.replace(/\}\{/g,'},{')}]`));
console.log(结果);

.as console wrapper{max height:100%!important;top:auto;}
您可以将
}{
替换为
},{
,对其进行解析,并从数组中获取索引为属性的对象

const
数据={“设备类型”:“iphone”,“过滤器数据”:{“标题”:{“值”:“Lorem Ipsum…”,“数据”:{},“消息”:{“值”:“Lorem Ipsum”只是打印的伪文本…”,“数据”:{},“关闭按钮”:{“值”:“确定”,“数据”:{}},“操作url”:{“值”:“数据”:{“类型”:“自定义”}{“设备类型”:“iphone”,“过滤器数据”:{“消息”:{推送消息放在这里。“,“数据”:{}};
result=Object.assign({},JSON.parse(`[${data.replace(/\}\{/g,'},{')}]`));
console.log(结果);


.as console wrapper{max height:100%!important;top:auto;}
哪个数据是一个字符串中的两个对象,在单个字符串中还是单独的?粘贴数据的实际情况。就像我有一个变量,其中这两个对象一个接一个,你的意思是什么?你的问题仍然不清楚。var a={obj_1}{obj_2}….{obj_n}像这样,所有对象都以字符串中的
device\u type
开头?哪个数据是一个字符串,两个对象在一个字符串中还是分开的?将数据按实际情况粘贴。像我有一个变量,其中这两个对象一个接一个地出现。你的意思是什么?你的问题仍然不清楚。var a={obj_1}{obj_2}..{obj_n}所有对象都是以字符串中的
device_type
开头的吗?这是像{obj1}{“0”:{obj1}}{obj2}{“0”:{obj2}这样的输出,如果我们可以用逗号分隔将所有对象放在一个数组中,那么我也可以使用它!这是像{obj1}{“0”:{obj1}{obj2}{0”:{obj1}{obj2如果我们可以用逗号分隔将这些数据放在一个数组中,那么我也可以使用它!我得到的输出像:{'0':{“设备类型”:“iphone”,“过滤器数据”:{“标题”:{“值”:“Lorem Ipsum…”,“数据”:{},“消息”:{“值”:“Lorem Ipsum仅仅是打印的虚拟文本…”,“数据”:{}},“关闭按钮”:{“值”:“确定”,“数据”:{},“动作url”:{“值”:“,”数据“:{”类型“:”自定义“}}}}}}{”0“:“{”设备类型“:”iphone“,”过滤数据“:{”消息“{”值“:”推送消息到这里。”,”数据“:{}}}}}}}}}请添加字符串,你正好回答了这个问题。两个对象之间有哪些字符看起来相似?两个对象之间没有任何字符。我的字符串类似于let a={obj}{obj}{1}{obj}}}u 2}。。。。。{obj_n}这
让a={obj_1}{obj_2}...{obj_n}
不是字符串定义