jquery javascript remove object data from JSON object

霸气de小男生 提交于 2020-01-21 03:49:10

问题


I have JSON Object that looks something like the below object, this object can go on for days. So I am wondering is there anyway I can delete full set a set being the equivalent of locations[0] or locations[1] in the example below. I'd have to first iterate over the Object and try to figure out which one is which though. So lets say I am looking to remove an set where the zipcode is 06238, I would need to run over the entire locations object and find out which set it is in the object, then remove it accordingly. Question is I'm not sure how to approach that notion.

{
"locations": [
            {
                "city": "San Jose",
                "state": "CA",
                "zipcode": "95125",
                "longitude": "0",
                "latitude": "0"
            },
            {
                "city": "Coventry",
                "state": "CT",
                "zipcode": "06238",
                "longitude": "0",
                "latitude": "0"
            }
        ]
    }

回答1:


Simply just pass the index

delete locations[0];

You go through a normal JSON iteration like this

jQuery.each(locations, function(i, val) {
   if(val.zipcode == "yourvalue") // delete index
   {
      delete locations[i];
  }
});

something like that. are you looking for an idea or a complete function.

Here is the jsFiddle




回答2:


You could write a removeFirst function like this:

function removeFirst(arr, func)
    {
        for (var i=0; i<arr.length; i++)
        {
            if (func.call(arr[i]))
            {
                arr.splice(i,1);
                return arr;
            }
        }
    }

and then call it:

removeFirst(locations, function(){return this.zipcode=="06238";});

If you want to remove more then one element, you could write it like this:

function removeMany(arr, func)
    {
        for (var i=arr.length; i>0; --i)
        {
            if (func.call(arr[i]))
            {
                arr.splice(i,1);
            }
        }
        return arr;
    }

and use it in the same way.

Alternatively, use underscore (http://documentcloud.github.com/underscore) reject method in a similar way:

_.reject(locations, function(location){ return location.zipcode=="06238";});

Underscore is pretty good for doing array manipulations.




回答3:


It worker for me.

  arrList = $.grep(arrList, function (e) { 

        if(e.add_task == addTask && e.worker_id == worker_id) {
            return false;
        } else {
            return true;
        }
    });

It returns an array without that object.

Hope it helps.



来源:https://stackoverflow.com/questions/9187337/jquery-javascript-remove-object-data-from-json-object

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!