javascript - 如何使用 underscore.js 通过字符串过滤对象数组

标签 javascript underscore.js jquery-select2

这就是我的对象数组的样子:

[
  {"id":"1","name":"John"},
  {"id":"2","name":"Jose"},
  {"id":"3", "name":"Mike"}
]

我想用像“jo”这样的字符串来过滤它,这样它就可以给我带来第一个和第二个项目。

如何让它以相同的“对象数组”形式返回对象,如下所示:

[
  {"id":"1","name":"John"},
  {"id":"2","name":"Jose"}
]

根据“select2.js”库创建的自动完成下拉菜单过滤的对象。

这是我迄今为止使用 stackoverflow 中的示例创建的内容:

(“有事要做”部分是我失败的地方,其他部分工作良好)

$parameterSelect.select2({
    data : {
        results : $scope.parameters,
        text : 'name'
    },
// init selected from elements value
initSelection    : function (element, callback) {
    var initialData = [];

    $(element.val().split(",")).each(function () {
        initialData.push({
            id  : this,
            text: this
        });
    });
    callback(initialData);
},
formatSelection : formatFunction,
formatResult : formatFunction,
multiple : true,
formatLoadMore   : 'Loading more...',
placeholder : "Select parameters",
// query with pagination
query            : function (q) {
    var pageSize,
    results;
    pageSize = 20; // or whatever pagesize
    results  = [];
    if (q.term && q.term !== "") {
    // HEADS UP; for the _.filter function i use underscore (actually lo-dash) here
       results = _.filter(this.data, function (e) {
            //something to do
       });
    } else if (q.term === "") {
        results = this.data;
    }
    q.callback({
        results: results.results.slice((q.page - 1) * pageSize, q.page * pageSize),
        more   : results.results.length >= q.page * pageSize
    });
}
});

最佳答案

使用一个函数进行过滤,该函数根据每个元素的 name 属性测试正则表达式。

_.filter(array, function(elt) { return /jo/i.test(elt.name); })

关于javascript - 如何使用 underscore.js 通过字符串过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33373477/

相关文章:

javascript - 动态打印javascript

node.js - 使用 Mongoose 从 MongoDB 获取数据

javascript - 使用 Javascript 对象作为对象键

javascript - 如何追加到 select2 中现有的下拉选项之一?

javascript - select2 背后的 Javascript 功能是什么

javascript - Jquery Scroll 从用户在屏幕上的任何地方滚动一个像素

javascript - js 代码根据条件检查禁用日期

javascript - 如何在jquery中重新加载页面后运行该语句

javascript - Lodash 深度选择

javascript - select2 标签 selectBox 的预选值