ios*_*tar 11 javascript arrays filter
我有一个对象数组
people = [
{id: "1", name: "abc", gender: "m", age:"15" },
{id: "2", name: "a", gender: "m", age:"25" },
{id: "3", name: "efg", gender: "f", age:"5" },
{id: "4", name: "hjk", gender: "m", age:"35" },
{id: "5", name: "ikly", gender: "m", age:"41" },
{id: "6", name: "ert", gender: "f", age:" 30" },
{id: "7", name: "qwe", gender: "f", age:" 31" },
{id: "8", name: "bdd", gender: "m", age:" 78" },
]
Run Code Online (Sandbox Code Playgroud)
我有另一个数组:
id_filter = [1,4,5,8]
Run Code Online (Sandbox Code Playgroud)
如果id匹配数组中的任何元素,我想过滤人的id_filter数组gender = m
如何使用过滤功能在javascript中执行此操作?
小智 44
最简单的过滤方式是使用数组的filter()函数,类似这样:
people.filter(person => id_filter.includes(person.id))
Run Code Online (Sandbox Code Playgroud)
Saj*_*ran 13
您可以使用array.filter()几个条件来获得所需的输出.我也纠正了你的JSON.
var filtered = people.filter(function(item) {
return id_filter.indexOf(item.id) !== -1 && item.gender==='m';
});
Run Code Online (Sandbox Code Playgroud)
DEMO
var people =[
{ "id": 1, "name": "abc", "gender": "m","age": "15" },
{ "id": 2, "name": "a", "gender": "m", "age": "25" },
{ "id": 3,"name": "efg", "gender": "f","age": "5" },
{ "id": 4,"name": "hjk","gender": "m","age": "35" },
{ "id": 5, "name": "ikly","gender": "m","age": "41" },
{ "id": 6, "name": "ert", "gender": "f", "age": "30" },
{ "id": 7, "name": "qwe", "gender": "f", "age": "31" },
{ "id":8, "name": "bdd", "gender": "m", "age": " 8" }
];
var id_filter = [1,4,5,8];
var filtered = people.filter(function(item) {
return id_filter.indexOf(item.id) !== -1 && item.gender==='m';
});
console.log(filtered);Run Code Online (Sandbox Code Playgroud)
具有Array.includes()功能:
var people = [
{id : "1", name : "abc", gender : "m", age :"15" }, {id : "2", name : "a", gender : "m", age :"25" },
{id : "3", name : "efg", gender : "f", age :"5" }, {id : "4", name : "hjk", gender : "m", age :"35" },
{id : "5", name : "ikly", gender : "m", age :"41" }, {id : "6", name : "ert", gender : "f", age :" 30" },
{id : "7", name : "qwe", gender : "f", age :" 31" }, {id : "8", name : "bdd", gender : "m", age :" 78" }
],
id_filter = [1,4,5,8],
result = people.filter((o) => id_filter.includes(+o.id) && o.gender == "m");
console.log(result);Run Code Online (Sandbox Code Playgroud)
+o.id- +在此处用于将数字字符串转换为数字在这种情况下,步行执行此操作更有意义,因此首先您需要遍历数组people,然后检查人员 id 是否等于您的过滤器列表
for(person in people) {
for(id in id_filter) {
if(person[id] == id && person[gender] == "m"){
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9244 次 |
| 最近记录: |