我想使用以下category_id值数组按category_id过滤以下对象:
[19012000, 19012001, 19012002, 19012003, 19012004, 19012005, 19012006, 19012007, 19012008]
Object {_account: "mjj9jp92z2fD1mLlpQYZI1gAd4q4LwTKmBNLz", _id: "rEEwENwnznCQvkm61wRziKlMRPqaYztnR4vn61", amount: 15, category: Array[2], category_id: "13005015"…}
Object {_account: "AaaraZrLqLfzRYoAPlb6ujPELWVW4dTK4eJWj", _id: "944r40rPgPU2nXqzMYolS5nyo6Eo9OuqrlDkB", amount: 50, category: Array[3], category_id: "19012000"…}
Object {_account: "AaaraZrLqLfzRYoAPlb6ujPELWVW4dTK4eJWj", _id: "rEEwENwnznCQvkm61wZ9uey62Pjy5YTqgYGDK", amount: 24, category: Array[2], category_id: "13005007"…}
Object {_account: "mjj9jp92z2fD1mLlpQYZI1gAd4q4LwTKmBNLz", _id: "rEEwENwnznCQvkm61wRziKlMRPqaYztnR4vn61", amount: 45, category: Array[2], category_id: "13005009"…}
Object {_account: "AaaraZrLqLfzRYoAPlb6ujPELWVW4dTK4eJWj", _id: "944r40rPgPU2nXqzMYolS5nyo6Eo9OuqrlDkB", amount: 105, category: Array[3], category_id: "13005009"…}
完成后,category_id 19012000的对象应该是唯一剩下的对象。
Object {_account: "AaaraZrLqLfzRYoAPlb6ujPELWVW4dTK4eJWj", _id: "944r40rPgPU2nXqzMYolS5nyo6Eo9OuqrlDkB", amount: 50, category: Array[3], category_id: "19012000"…}
我已经尝试了不同版本的iteratee函数,包括filter,map和each,并尝试了键值,值,反转,选择和省略的键值过滤器。在尝试了这个之后,我相信它应该可行,我会联系到你:
var postDate = _.filter(_.first(goodDates), function(n){return category_id.indexOf(n.category_id) !== -1})
其中goodDates是对象列表,category_id是上面的数组。
答案 0 :(得分:2)
indexOf()
var a = [123];
console.log(a.indexOf(123)); //true
console.log(a.indexOf("123")); //false
您的代码无效,因为您正在将对象中的字符串与数组中的数字进行比较。
category_id.indexOf(+n.category_id)
或
category_id.indexOf(parseInt(n.category_id, 10))
答案 1 :(得分:0)
我在这里没有看到任何使用_.first
的理由?您的过滤器语句的其余部分看起来不错,尽管您可以调用_.contains
的indexOf
调用:
var postDates = _.filter(goodDates, function(n){
return _.contains(category_id, n.category_id);
});