过滤数组中的特定项

时间:2013-11-24 13:09:06

标签: jquery

我使用jquery tokeninput来填充输入来自服务器的数据,例如:

$(".input").tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", {
            prePopulate: [{id: 123, name: "Slurms MacKenzie"}],
        });

所以现在我有一个问题,我想在一个具有特定数据的网站上填写几个输入,所以我改变了我的代码:

<input type="text" id="1" class="input" name="blah" />
<input type="text" id="2" class="input" name="blah" />

        var array =  [
            {id: 123, name: "Smith", input: "1"},
            {id: 156, name: "Kanye", input: "2"},
            {id: 134, name: "MacKenzie", input: "1"}
            ]

     $(".input").tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", {
            prePopulate: array
        });

你怎么看到我在数组input中添加了id输入所定义的项目应该是什么,例如:

 {id: 156, name: "Kanye", input: "2"}

只应输入id 2

那么如何只过滤$(this).attr(“id”)与输入值相同的数组条目:在数组中?

谢谢小提琴:http://jsfiddle.net/v394w/7/

1 个答案:

答案 0 :(得分:1)

抓取每个.input,使用$.grep()过滤相应id的数组,并使用已过滤的数组初始化tokenInput

var array =  [
    {id: 123, name: "Smith", input: "1"},
    {id: 156, name: "Kanye", input: "2"},
    {id: 134, name: "MacKenzie", input: "1"}
];

$(".input").each(function(_, item) {
    var filtered= $.grep(array, function(el) {
                        return el.input == item.id;
                    });

    $(this).tokenInput("http://shell.loopj.com/tokeninput/tvshows.php", {
        prePopulate: filtered
    });
});

fiddle