在.where中可以在_.js中使用变量吗?
我正在制作一个过滤系统,它获取一个对象数组,并在单击时过滤掉选定的对象。但是,根据所选的元素,要筛选的对象是不同的,因此我想使用_.js来筛选传递给它的_.where变量。
硬编码的值工作得很好,但是当被复制变量替换时,它会产生一个空白数组。
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);
});发布于 2014-01-07 15:18:18
在调用where时,有一种方法可以使用变量,这就是创建在所期望的对象文本。这可以使用下划线函数.object来完成,它可以接受键数组、值数组或键值对数组。
在您的示例中,您可以这样做:
user_filters = _.where(user_filters, _.object([[selectedFilter, filters]]));发布于 2014-01-07 08:07:49
我想你是在找这样的东西:
user_filters = user_filters.filter(function(item) {
return item[selected_filter] === filters;
});(并省略filters = '"'+filters+'"';行)
或者,使用下划线的filter
user_filters = _.filter(user_filters, function(item) {
return item[selected_filter] === filters;
});发布于 2017-09-08 12:31:34
如果变量被方括号包围,则可以使用:
在您的情况下,您可以这样做:
var selected_filter = $this.siblings('a').text();
selected_filter = selected_filter.toLowerCase();
_.where(user_filters, {[selected_filter]: filters});https://stackoverflow.com/questions/20966214
复制相似问题