【问题标题】:how to add an array into an array of json object如何将数组添加到json对象数组中
【发布时间】:2020-02-22 12:31:32
【问题描述】:
    var tags = { 

112 :[  
{ "tag":"Shyam", picx: 700, picy: 300 },
{ "tag":"Bob", picx: 340, picy: 120 },  
{ "tag":"Jai", picx: 500, picy: 240 } 
],

114 :[  
{ "tag":"pen", picx: 300, picy: 100 },
{ "tag":"cd", picx: 440, picy: 220 },  
{ "tag":"paper", picx: 600, picy: 440 } 
] };

这是我拥有的对象数组,我喜欢将以下内容添加到变量标签中

115 :[  
{ "tag":"bob", picx: 350, picy: 180 },
{ "tag":"tom", picx: 450, picy: 200 },  
{ "tag":"dave", picx: 620, picy: 430 } 
]

我试过了

tags.push( { 
115 :[  
{ "tag":"bob", picx: 350, picy: 180 },
{ "tag":"tom", picx: 450, picy: 200 },  
{ "tag":"dave", picx: 620, picy: 430 } 
] } );

但没用

【问题讨论】:

  • tags 是一个对象而不是数组,但push() 是一个数组方法。分配为新属性tags[115] = [....]
  • 我也试过了,112 和 114 有三个对象,但如果我尝试你的解决方案,我只能添加一个,我想更动态地添加 tags[115] = [ { "tag":"box", picx: 550, picy: 180 } ] ; 但如果我再做一次,只有最后一个对象在那里。
  • 所以当属性存在并且是数组时,你会这样做tags[115].push({...})
  • tags[115].push({...}) 不起作用,执行在该行停止。
  • 可能是因为您没有检查该属性是否存在。似乎您在询问两种不同的条件....当属性不存在时如何添加以及当属性不存在时如何添加。你想要数组中的这些对象的来源是什么?

标签: jquery arrays json push


【解决方案1】:

tag 不是数组,但它是对象。要将数据添加到对象中,您需要添加一个key,然后将数据分配给key

var tags = {
    112: [
        { "tag": "Shyam", picx: 700, picy: 300 },
        { "tag": "Bob", picx: 340, picy: 120 },
        { "tag": "Jai", picx: 500, picy: 240 }
    ],

    114: [
        { "tag": "pen", picx: 300, picy: 100 },
        { "tag": "cd", picx: 440, picy: 220 },
        { "tag": "paper", picx: 600, picy: 440 }
    ]
};

并添加键115并分配必要的数据:

tags[115] = [
    { "tag":"bob", picx: 350, picy: 180 },
    { "tag":"tom", picx: 450, picy: 200 },
    { "tag":"dave", picx: 620, picy: 430 }
];

console.log(`my tags: `, tags)

【讨论】:

    【解决方案2】:

    在对象中添加数组对象时出错,push方法用于在数组中添加对象。 因此,首先,您必须将 Object 转换为数组,然后才能在数组 Object 中添加数组。

    var tags = { 
    
    112 :[  
    { "tag":"Shyam", picx: 700, picy: 300 },
    { "tag":"Bob", picx: 340, picy: 120 },  
    { "tag":"Jai", picx: 500, picy: 240 } 
    ],
    
    114 :[  
    { "tag":"pen", picx: 300, picy: 100 },
    { "tag":"cd", picx: 440, picy: 220 },  
    { "tag":"paper", picx: 600, picy: 440 } 
    ]
    };
    console.log(typeof(tags)); //shows object type
    tags=Object.entries(tags);
    
    tags.push({ 
    115 :[  
    { "tag":"bob", picx: 350, picy: 180 },
    { "tag":"tom", picx: 450, picy: 200 },  
    { "tag":"dave", picx: 620, picy: 430 } 
    ] } );
    console.log(tags);
    

    【讨论】:

    • typeof [] 也是“对象”。这对这里有什么帮助?此外,您推动 Object.entries(tags)` 的结果是不同的格式。这个解决方案似乎根本不实用
    • 这个解决方案在我发布到PHP时完全改变了数组结构,而且我想将对象数组动态添加到对象标签中
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 2018-07-20
    • 1970-01-01
    • 2019-07-16
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多