簡體   English   中英

JAVASCRIPT:如何刪除json對象中的json對象?

[英]JAVASCRIPT: how can I remove a json object in json object?

如何刪除json對象中的json對象?

[
    [
        {"name":"formtype","value":"ordering"},          
        {"name":"extera_Ordering_json[id]","value":"1"}
   ],
   [
        {"name":"extera_Ordering_json[count]","value":"20"},               
        {"name":"coupon","value":""},
        {"name":"formtype","value":"ordering"}, 
        {"name":"extera_Ordering_json[id]","value":"2"}
   ],
   [
       {"name":"extera_Ordering_json[count]","value":"7"},
       {"name":"coupon","value":"1"},
       {"name":"formtype","value":"ordering"},
       {"name":"extera_Ordering_json[id]","value":"3"}
   ],
   [   {"name":"extera_Ordering_json[count]","value":"1"},
       {"name":"coupon","value":"1"},
       {"name":"formtype","value":"ordering"},
       {"name":"extera_Ordering_json[id]","value":"4"}
   ]
]

我在ordering保存了這個json

現在我要刪除

   [   {"name":"extera_Ordering_json[count]","value":"1"},
       {"name":"coupon","value":"1"},
       {"name":"formtype","value":"ordering"},
       {"name":"extera_Ordering_json[id]","value":"4"}
   ]

我的關鍵是extera_Ordering_json[id] (它不是唯一的)

我這樣做:

ordering = JSON.parse(ordering);
var temp;
$.each(ordering, function(idx, obj)
{
    if(obj.Ordering_json[id] != 4)// not works
    {
        temp[] = obj;
    }
    temp[] = obj
}
ordering = JSON.stringify(temp);

您正在使用id而不是idx。 試試這個

if(obj.Ordering_json[idx] != 4)

你可以使用拼接方法

ordering = [ /*Array without json parsing*/ ];
var indexToDelete = 3;
ordering.splice( indexToDelete, 1); 
// 1 indicates only one element from array 
console.log(ordering);

第二種解決方案是你可以從數組中刪除它

ordering = [ /*Array without json parsing*/ ];
var indexToDelete = 3;
delete ordering[ indexToDelete ];
console.log(ordering);

"extera_Ordering_json[id]"只是一個字符串,因此您需要迭代每個數組中的所有對象並找到具有該字符串作為name的對象並檢查同一對象的value

這是一個地圖和過濾方法

 var data = [ [ {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"1"} ], [ {"name":"extera_Ordering_json[count]","value":"20"}, {"name":"coupon","value":""}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"2"} ], [ {"name":"extera_Ordering_json[count]","value":"7"}, {"name":"coupon","value":"1"}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"3"} ], [ {"name":"extera_Ordering_json[count]","value":"1"}, {"name":"coupon","value":"1"}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"4"} ] ] var searchVal = 1 data=data.map(function(arr){ return arr.filter(function(o){ return o.name !== "extera_Ordering_json[id]" || +o.value !== searchVal }) }) console.log(data) 

您可以在JSON數組上使用splice方法刪除特定索引處的元素:

 var ordering = JSON.stringify([ [ {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"1"} ], [ {"name":"extera_Ordering_json[count]","value":"20"}, {"name":"coupon","value":""}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"2"} ], [ {"name":"extera_Ordering_json[count]","value":"7"}, {"name":"coupon","value":"1"}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"3"} ], [ {"name":"extera_Ordering_json[count]","value":"1"}, {"name":"coupon","value":"1"}, {"name":"formtype","value":"ordering"}, {"name":"extera_Ordering_json[id]","value":"4"} ] ]) temp = JSON.parse(ordering); temp.splice(3, 1) ordering = JSON.stringify(temp); console.log(ordering) 

在你的情況下, extera_Ordering_json[id]不是鍵,它是name

  var ordering = [ [ {"name": "formtype", "value": "ordering"}, {"name": "extera_Ordering_json[id]", "value": "1"} ], [ {"name": "extera_Ordering_json[count]", "value": "20"}, {"name": "coupon", "value": ""}, {"name": "formtype", "value": "ordering"}, {"name": "extera_Ordering_json[id]", "value": "2"} ], [ {"name": "extera_Ordering_json[count]", "value": "7"}, {"name": "coupon", "value": "1"}, {"name": "formtype", "value": "ordering"}, {"name": "extera_Ordering_json[id]", "value": "3"} ], [{"name": "extera_Ordering_json[count]", "value": "1"}, {"name": "coupon", "value": "1"}, {"name": "formtype", "value": "ordering"}, {"name": "extera_Ordering_json[id]", "value": "4"} ] ]; var temp = []; $.each(ordering, function (key1, obj1) { $.each(obj1, function (key2, obj2) { if (obj2.name == 'extera_Ordering_json[id]' && obj2.value == 4) { delete ordering[key1]; } }); if(ordering[key1] != null){ temp.push(ordering[key1]); } }); console.log(JSON.stringify(temp)); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 

這應該做你想要的:

var ordering = [
    [
        {"name":"formtype","value":"ordering"},          
        {"name":"extera_Ordering_json[id]","value":"1"}
    ],
    [
        {"name":"extera_Ordering_json[count]","value":"20"},               
        {"name":"coupon","value":""},
        {"name":"formtype","value":"ordering"}, 
        {"name":"extera_Ordering_json[id]","value":"2"}
    ],
    [
       {"name":"extera_Ordering_json[count]","value":"7"},
       {"name":"coupon","value":"1"},
       {"name":"formtype","value":"ordering"},
       {"name":"extera_Ordering_json[id]","value":"3"}
    ],
    [   
       {"name":"extera_Ordering_json[count]","value":"1"},
       {"name":"coupon","value":"1"},
       {"name":"formtype","value":"ordering"},
       {"name":"extera_Ordering_json[id]","value":"4"}
    ]
];
    var sVal = 4;
    var indexToRemove = false;
    ordering.forEach(function(element, index) {
       element.forEach(function(subelement) {
           if (subelement.name == "extera_Ordering_json[id]" 
              && parseInt(subelement.value) == sVal){
              indexToRemove = index;
           }
       });
    });

    if (false !== indexToRemove) {
        ordering.splice(indexToRemove, 1);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM