最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - deleting row from JSON array leaves 'null' - Stack Overflow

programmeradmin10浏览0评论

/

In test2, you can see that instead of removing the node from the array, it is replacing the node with 'null'.

What am I doing wrong, and how can I remove it completely?

Edit: using Splice instead of delete. Updated fiddle here: /

http://jsfiddle.net/J2KuY/

In test2, you can see that instead of removing the node from the array, it is replacing the node with 'null'.

What am I doing wrong, and how can I remove it completely?

Edit: using Splice instead of delete. Updated fiddle here: http://jsfiddle.net/J2KuY/1/

Share Improve this question asked Apr 4, 2012 at 22:55 S16S16 2,9959 gold badges43 silver badges64 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 9

use splice :

http://www.w3schools.com/jsref/jsref_splice.asp

Here's a sample with chaining

//say you have these arrays
var test1 = [{
    "Country": "Spain",
    "info info1": 0.329235716,
    "info info2": 0.447683684,
    "info info3": 0.447683747},
{
    "Country": "Chile",
    "info info1": 1.302673893,
    "info info2": 1.357820775,
    "info info3": 1.35626442},
{
    "Country": "USA",
    "info info1": 7.78805016,
    "info info2": 26.59681951,
    "info info3": 9.200900779}];

var test2 = [{
    "Country": "Germany",
    "info info1": 0.329235716,
    "info info2": 0.447683684,
    "info info3": 0.447683747},
{
    "Country": "China",
    "info info1": 1.302673893,
    "info info2": 1.357820775,
    "info info3": 1.35626442},
{
    "Country": "France",
    "info info1": 7.78805016,
    "info info2": 26.59681951,
    "info info3": 9.200900779}];


//similar to jQuery, wrap them in an object
function $W(param) {
    var obj = {};

    //set data
    obj.data = param;

    //augment the object with a remove function
    obj.remove = function(key, val) {
        var i = 0;
        //loop through data
        while (this.data[i]) {
            if (this.data[i][key] === val) {
                //if we have that data, splice it
                //splice changes the array length so we don't increment
                this.data.splice(i, 1);
            } else {
                //else move on to the next item
                i++;
            }
        }
        //be sure to return the object so that the chain continues
        return this;
    }

    //return object for operation
    return obj
}

//the following will look strangely similar to jQuery

//remove chile, then USA
var result1 = $W(test1).remove('Country', 'Chile').remove('Country', 'USA');

//remove germany and china
var result2 = $W(test2).remove('Country', 'China').remove('Country', 'Germany');

//should only have spain and france
$('#test2').val(JSON.stringify(result1)+JSON.stringify(result2));​
发布评论

评论列表(0)

  1. 暂无评论