如何在多维数组中找到数组?

时间:2012-08-08 18:57:10

标签: javascript jquery

这就是我目前的搜索方式:

function RemoveQuestion(question)
    {
        $.each(questionCollection, function (index, item)
        {
            var indexToRemove;
            if (item["PprID"] == question["PprID"])
            {
                //This question needs to be removed.
                indexToRemove = index;
                return false;
            }
        });

        questionCollection.splice(indexToRemove, 1);
    }

我想循环遍历每个数组实例,然后查看它内部的数组可能会有点慢。

感谢任何帮助。

由于

凯文

4 个答案:

答案 0 :(得分:1)

您可以使用jQuery inArray()来查找项目,然后将其删除

http://api.jquery.com/jQuery.inArray/

您甚至可以使用jQuery grep查找项目并将其拼接出来:

How to remove specifc value from array using jQuery

答案 1 :(得分:0)

要检查阵列,您需要:

if( Object.prototype.toString.call( item ) === '[object Array]' ) {
  // do some
}

要在数组中查找元素,您可以使用jQuery .inArray()

答案 2 :(得分:0)

您可以将questionCollection更改为数组的哈希值。或者你可以先从它构建和索引哈希,假设你只需要这样做一次就可以删除多个问题。

function IndexQuestions()
{
    $.each(questionCollection, function (index, item)
    {
        questionIndex[item["PprID"]] = index;
    });
}
function RemoveQuestion(question)
{
    var indexToRemove = questionIndex[question["PprID"]];
    if (indexToRemove != null)
    {
        questionCollection.splice(indexToRemove, 1);
    }
}

答案 3 :(得分:0)

http://api.jquery.com/jQuery.grep/

function RemoveQuestion(question) 
{ 
    questionCollection = $.grep(questionCollection, function (item) {
        return (item.PprID === question.PprID);
    }, true);
}