波斯汪
_.按 lodash 过滤您可以通过 lodash 使用过滤器方法迭代集合的元素,返回所有元素的数组谓词返回truthy for。谓词使用三个参数调用:(值,索引|键,集合)。它返回一个新数组https://lodash.com/docs/4.17.15#filterlodash 上的过滤器使用示例var users = [{ 'user': 'barney', 'age': 36, 'active': true }, { 'user': 'fred', 'age': 40, 'active': false }, { 'user': 'fred', 'age': 39, 'active': true }];console.log("matches:", _.filter(users, function(o) { return !o.active;}));// => [{ active: true, age: 36, user: "barney"}]// The `_.matches` iteratee shorthand.console.log("_.matches` iteratee", _.filter(users, { 'user': 'fred', 'active': true}));// => [{ active: true, age: 39, user: "fred"}]// The `_.matchesProperty` iteratee shorthand.console.log("matchs poperty", _.filter(users, ['active', false]));// => objects for ['fred']// The `_.property` iteratee shorthand._.filter(users, 'active');// => objects for ['barney']<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.min.js"></script>_.where by underscore.js你还可以使用underscore.js 的where方法查看列表中的每个值,返回一个包含与属性中列出的键值对匹配的所有值的数组。 _.where(list, properties)_.where 用法示例 _.where(listOfPlays, {author: "Shakespeare", year: 1611});您基本上可以在普通的 javascript 中使用过滤器方法var peoples = [ { "name": "bob", "dinner": "pizza" }, { "name": "john", "dinner": "sushi" }, { "name": "john", "dinner": "sushi" }, { "name": "larry", "dinner": "hummus" }, { "name": "john", "dinner": "pie" }];var dinner = peoples.filter(e=>e.name ==="john" && e.dinner==="sushi");console.log(dinner)您也可以使用 jquery grepvar peoples = [ { "name": "bob", "dinner": "pizza" }, { "name": "john", "dinner": "sushi" }, { "name": "john", "dinner": "sushi" }, { "name": "larry", "dinner": "hummus" }, { "name": "john", "dinner": "pie" }];var dinner = $.grep(peoples, function(people) { return people.name === "john" && people.dinner === "sushi";});console.log(dinner)<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>查找 vs 过滤器var peoples = [ { "name": "bob", "dinner": "pizza" }, { "name": "john", "dinner": "sushi" }, { "name": "john", "dinner": "sushi" }, { "name": "larry", "dinner": "hummus" }, { "name": "john", "dinner": "pie" }];var filterDinner = peoples.filter(e=>e.name ==="john" && e.dinner==="sushi");// return all matching resultsconsole.log('filter dinner -:', filterDinner);var findDinner = peoples.find(e=>e.name ==="john" && e.dinner==="sushi");//returns the first matching rsltconsole.log('find dinner -:', findDinner);不推荐使用 Find,因为它返回第一个匹配结果,并且假设我们有更多匹配结果,它们会被遗漏。
qq_花开花谢_0
我不知道上下文,但可能有两个 john 并且都将晚餐属性设置为 pie。我建议对数组中的每个条目使用 id 。如果您正在使用的数组是您列出的数组,您可以map在执行搜索之前使用它进行投影/转换。例如const people = [ { name: "bob", dinner: "pizza" }, { name: "john", dinner: "sushi" }, { name: "larry", dinner: "hummus" }, { name: "john", dinner: "pie" },];const peopleList = people.map((person, id) => ({ id, ...person }));console.log(peopleList);// You could start from here to search by id