1

like this:

var arr = [  
            { name: "robin", age: 19 },   
            { name: "tom", age: 29 },  
            { name: "test", age: 39 } 
          ];  

I want to remove array item like this(an array prototype method):

arr.remove("name", "test");  // remove by name  
arr.remove("age", "29");  // remove by age

currently, I do it by this method(use jQuery):

Array.prototype.remove = function(name, value) {  
    array = this;  
    var rest = $.grep(this, function(item){    
        return (item[name] != value);    
    });  

    array.length = rest.length;  
    $.each(rest, function(n, obj) {  
        array[n] = obj;  
    });  
};  

but I think the solution has some performance issue,so any good idea?

1
  • This doesn't really have anything to do with JSON. Commented Dec 10, 2009 at 10:10

1 Answer 1

7

I would hope jQuery's oddly-named grep would be reasonably performant and use the built-in filter method of Array objects where available, so that bit is likely to be fine. The bit I'd change is the bit to copy the filtered items back into the original array:

Array.prototype.remove = function(name, value) {  
    var rest = $.grep(this, function(item){    
        return (item[name] !== value); // <- You may or may not want strict equality
    });

    this.length = 0;
    this.push.apply(this, rest);
    return this; // <- This seems like a jQuery-ish thing to do but is optional
};
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.