比较并删除jquery数组对象中的项

时间:2012-02-20 04:56:22

标签: jquery arrays ajax

我正在收集每个请求的用户列表,并将用户列表推送到如下所示的数组中:

$.each(data, function (i, item) {
    jQuery.each(array, function (index, data) {
        if (data.UserId == user.Id) {
            //do nothing
        }
    });

    else{
        array.push(UserId:user.Id);
    }

});

然后,我将这些数据发送到服务器:

jQuery.ajax({
    cache: false,
    type: "GET",
    url: "Handler.ashx",
    contentType: "application/json; charset=utf-8",
    data: { UsersData: JSON.stringify(array) },
    dataType: "json"
});

现在在下一次,我必须找到前面的对象,并删除未在用户列表中显示的用户,我必须发送到请求。请任何人告诉我如何将用户列表添加到数组中以及从不在用户列表中的数组中删除用户。

2 个答案:

答案 0 :(得分:1)

如果你想删除一些数据,你可以使用jQuery filter方法(source)或更好的数组filter方法({{3 }})。

注意:Array filter方法(以及map,reduce和其他一些方法)是ECMAScript 5的一部分,并且在某些较旧的浏览器(基本上是较旧的IE)中不受支持。虽然有很多垫片,但mdn文档都显示了如何自己实现这些方法(source)。

以下是您使用它的方式:

var array = [1,2,3,4,5,6];
var filteredArray = array.filter(function (item /*current item in the array*/) {
    return item % 2; //return a boolean
});
console.log(filteredArray); // [1,3,5]

然后你可以将一个子集传递给你的AJAX方法。

答案 1 :(得分:0)

JavaScript提供了几种轻松添加或删除数组的方法。

// add "7" to the array
var nums = [1,2,3,4,5,6];
nums.push(7);

// remove "3" from the array (index position #2)
nums.splice(2,1);

// find "5" and remove it
nums.splice(nums.indexOf(5), 1);