【问题标题】:how to create a separate array of json object having common id如何创建一个单独的具有公共 id 的 json 对象数组
【发布时间】:2021-02-19 18:38:44
【问题描述】:

大家好,我有情况需要你的帮助,我有一个具有公共 id 的 json 数组,首先我需要从所有 json obj 中获取公共 id,然后将每个公共 json 放置到单独的数组中

var myArray = [ {"id" : 1, "text": "Number one", "time": "16 03 13"},{"id" : 1, "text": "Number two", "time": "14 03 13"},{"id" : 1, "text": "Number three", "time": "13 03 13"},{"id" : 2, "text": "Number one", "time": "13 03 13"}] 


I want output of this object as 

 var myArray = {    
[           
"1" : [
  {"text": "Number one", "time": "16 03 13"}, 
  {"text": "Number two", "time": "14 03 13"},  
  {"text": "Number three", "time": "13 03 13"} 
]
]
[
"2" : [
  {"text": "Number one", "time": "13 03 13"}   
]

]}

I want to place common ID in a each separate JSON array to make 2d array

【问题讨论】:

    标签: javascript node.js json arraylist


    【解决方案1】:
    
    var myArray = [ {"id" : 1, "text": "Number one", "time": "16 03 13"},{"id" : 1, "text": "Number two", "time": "14 03 13"},{"id" : 1, "text": "Number three", "time": "13 03 13"},{"id" : 2, "text": "Number one", "time": "13 03 13"}] 
    
    
    
    const uniqueIds  = myArray.map(elem=>elem.id).filter((value, index, self)=>self.indexOf(value) === index)
    
    
    const contentsOfId = (id)=>{
        return myArray.filter(elem=>elem.id === id).map(({text,time})=>({text,time}))
    
    }
    
    const results = uniqueIds.map(id =>{
    
        const obj={}
        obj[id]=contentsOfId(id);
        return obj;
    
    })
    
    

    输出将是

    
    [{"1":[{"text":"Number one","time":"16 03 13"},{"text":"Number two","time":"14 03 13"},{"text":"Number three","time":"13 03 13"}]},{"2":[{"text":"Number one","time":"13 03 13"}]}]
    
    
    

    【讨论】:

      【解决方案2】:

      您可以线性地实现这一点,而不是使用多个循环。

      var myArray = [{ "id": 1, "text": "Number one", "time": "16 03 13" }, { "id": 1, "text": "Number two", "time": "14 03 13" }, { "id": 1, "text": "Number three", "time": "13 03 13" }, { "id": 2, "text": "Number one", "time": "13 03 13" }]
      const outputArray = {}
      myArray.forEach((ele)=>{
          if(outputArray[ele.id]){
             outputArray[ele.id] = [...outputArray[ele.id], {...ele}]
          } else {
             outputArray[ele.id] = [ele]
          }
      });
      console.log(outputArray)
      

      输出将是

      { '1':[ { id: 1, text: 'Number one', time: '16 03 13' },
              { id: 1, text: 'Number two', time: '14 03 13' },
              { id: 1, text: 'Number three', time: '13 03 13' }
             ],
        '2': [ { id: 2, text: 'Number one', time: '13 03 13' } ]
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 2021-09-22
        • 1970-01-01
        相关资源
        最近更新 更多