【问题标题】:Delete Json data with generated ID [duplicate]使用生成的 ID 删除 Json 数据 [重复]
【发布时间】:2019-12-01 04:47:24
【问题描述】:

如何使用生成的 ID 从 JSON 中删除数组。

所以我有一个 JSON Like:

{
    "Artikel":[
        { "id:1, artikelnr": "23453345", "anzahl": 22},
        { "id:2, artikelnr": "asd323", "anzahl": 2223},
        { "id:5, artikelnr": "dfsdf3893", "anzahl": 72},
        { "id:6, artikelnr": "asdikr38", "anzahl": 86},
        { "id:9, artikelnr": "2sad34533asd45", "anzahl": 10}
    ]
}

我喜欢删除 json,例如 id 为 6,那么 JSON 应该如下所示:

{
     "Artikel":[
         { "id:1, artikelnr": "23453345", "anzahl": 22},
         { "id:2, artikelnr": "asd323", "anzahl": 2223},
         { "id:5, artikelnr": "dfsdf3893", "anzahl": 72},
         { "id:9, artikelnr": "2sad34533asd45", "anzahl": 10}
     ]
}

我该怎么做?

【问题讨论】:

  • 你应该先重组它。将id:9, artikelnr 作为属性名称并不是很有用。
  • @DanielKreiner 是你的对象键吗? "id:2, artikelnr":?也许它看起来像这样? "id":5, "artikelnr":dfsdf3893

标签: javascript html arrays json cordova


【解决方案1】:

您可以根据要删除的id 创建一个动态正则表达式。然后,filter 数组来获取所有没有给定模式的键的对象

const input={Artikel:[{"id:1, artikelnr":"23453345",anzahl:22},{"id:2, artikelnr":"asd323",anzahl:2223},{"id:5, artikelnr":"dfsdf3893",anzahl:72},{"id:6, artikelnr":"asdikr38",anzahl:86},{"id:9, artikelnr":"2sad34533asd45",anzahl:10}]},
    idToRemove = 6,
    regex = new RegExp(`id:${idToRemove}`),
    Artikel = input.Artikel.filter(o => !Object.keys(o).some(k => regex.test(k)))

console.log({ Artikel } )

【讨论】:

    【解决方案2】:

    一个更简单的方法是:

    const j = {"Artikel":[
      { "id":1, "artikelnr": "23453345", "anzahl": 22},
      { "id":2, "artikelnr": "asd323", "anzahl": 2223},
      { "id":5, "artikelnr": "dfsdf3893", "anzahl": 72},
      { "id":6, "artikelnr": "asdikr38", "anzahl": 86},
      { "id":9, "artikelnr": "2sad34533asd45", "anzahl": 10}
    ]}
    
    
    j["Artikel"].forEach(function(item, index){
    	if(item["id"] == 6){
    		j["Artikel"].splice(index, 1)
    	}
    });
    
    console.log(j)

    【讨论】:

      【解决方案3】:

      您可以映射每个对象,拆分键并检查 id:6 是否存在:

      const obj = { Artikel: [{ "id:1, artikelnr": "23453345", anzahl: 22 }, { "id:2, artikelnr": "asd323", anzahl: 2223 }, { "id:5, artikelnr": "dfsdf3893", anzahl: 72 }, { "id:6, artikelnr": "asdikr38", anzahl: 86 }, { "id:9, artikelnr": "2sad34533asd45", anzahl: 10 }] };
      
      obj.Artikel = obj.Artikel.filter(o => Object.keys(o).every(i => i.split(', ')[0] !== 'id:6'))
      console.log(obj)

      您甚至可以再次拆分以使用黑名单:

      const obj = { Artikel: [{ "id:1, artikelnr": "23453345", anzahl: 22 }, { "id:2, artikelnr": "asd323", anzahl: 2223 }, { "id:5, artikelnr": "dfsdf3893", anzahl: 72 }, { "id:6, artikelnr": "asdikr38", anzahl: 86 }, { "id:9, artikelnr": "2sad34533asd45", anzahl: 10 }] };
      
      const blacklist = [1, 6]
      
      obj.Artikel = obj.Artikel.filter(o => Object.keys(o).every(i => !blacklist.includes(+i.split(', ')[0].split(':')[1])))
      console.log(obj)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-09
        • 2021-08-03
        • 2014-04-26
        • 1970-01-01
        相关资源
        最近更新 更多