首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在underscore.js _.where中使用变量

问在underscore.js _.where中使用变量
EN

Stack Overflow用户
提问于 2014-01-07 07:29:25
回答 3查看 1.5K关注 0票数 1

在.where中可以在_.js中使用变量吗?

我正在制作一个过滤系统,它获取一个对象数组,并在单击时过滤掉选定的对象。但是,根据所选的元素,要筛选的对象是不同的,因此我想使用_.js来筛选传递给它的_.where变量。

硬编码的值工作得很好,但是当被复制变量替换时,它会产生一个空白数组。

代码语言:javascript
复制
var user_filters = user_array;
var filtered_text;
$('.allFilters li').click(function () {
    var $this = $(this); 
    var selected_filter = $this.siblings('a').text();
    selected_filter = selected_filter.toLowerCase();
    var filters = $this.attr('data-filter-value');
    filters = '"'+filters+'"';
    selected_filter = selected_filter;
    console.log(selected_filter, filters);
    user_filters = _.where(user_filters, {selected_filter: filters});
    console.log (user_filters);
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-07 15:18:18

在调用where时,有一种方法可以使用变量,这就是创建在所期望的对象文本。这可以使用下划线函数.object来完成,它可以接受键数组、值数组或键值对数组。

在您的示例中,您可以这样做:

代码语言:javascript
复制
user_filters = _.where(user_filters, _.object([[selectedFilter, filters]]));
票数 2
EN

Stack Overflow用户

发布于 2014-01-07 08:07:49

我想你是在找这样的东西:

代码语言:javascript
复制
user_filters = user_filters.filter(function(item) {
  return item[selected_filter] === filters;
});

(并省略filters = '"'+filters+'"';行)

或者,使用下划线的filter

代码语言:javascript
复制
user_filters = _.filter(user_filters, function(item) {
  return item[selected_filter] === filters;
});
票数 0
EN

Stack Overflow用户

发布于 2017-09-08 12:31:34

如果变量被方括号包围,则可以使用:

在您的情况下,您可以这样做:

代码语言:javascript
复制
var selected_filter = $this.siblings('a').text();
    selected_filter = selected_filter.toLowerCase();

_.where(user_filters, {[selected_filter]: filters});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20966214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档