Javascript 使用lodash react js使用数组值筛选嵌套数据
考虑这个例子。我正在使用 如果只有一个id可以过滤,我想用location_id过滤上面的数据Javascript 使用lodash react js使用数组值筛选嵌套数据,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,考虑这个例子。我正在使用 如果只有一个id可以过滤,我想用location_id过滤上面的数据 var filterplaces = _.filter(data.places,{ location: [{ location_id: this.state.selectedLocationId}] }); 它返回正确的过滤数据。 知道问题是当存在多个位置id时,我应该如何将数组数据传递给筛选记录。 假设selectedLocationId将是具有locationid[2,5]的数组 谢谢你的帮助
var filterplaces = _.filter(data.places,{ location: [{ location_id: this.state.selectedLocationId}] });
它返回正确的过滤数据。
知道问题是当存在多个位置id时,我应该如何将数组数据传递给筛选记录。
假设selectedLocationId将是具有locationid[2,5]的数组
谢谢你的帮助
提前感谢。您可以不用洛达斯:
data.places.forEach(元素=>
element.location.filter(obj=>required_id.indexOf(obj.location_id)>-1).长度
&&过滤器位置。推动(元件)
);
var数据={
“地点”:[{
地点:1,,
地名:“123”,
地点:[{
地点_id:1,,
地点名称:“xyz”
},
{
地点_id:2,,
地点名称:“abc”
},
{
地点_id:3,,
地点名称:“等”
},
]
},
{
地点:2,,
地名:“456”,
地点:[{
地点_id:1,,
地点名称:“xyz”
},
{
地点_id:3,,
地点名称:“abc”
},
{
地点_id:4,,
地点名称:“等”
},
]
},
{
地点:3,,
地名:“123”,
地点:[{
地点_id:5,,
地点名称:“xyz”
},
{
地点_id:6,,
地点名称:“abc”
},
{
地点_id:2,,
地点名称:“等”
},
]
}
]
};
设所需的_id=[1,2];
var filterplaces=[];
data.places.forEach(element=>element.location.filter(obj=>required_id.indexOf(obj.location_id)>-1)、length&&filterplaces.push(element));
控制台日志(过滤器位置)代码>您可以使用:
希望这有助于迭代集合的元素,返回谓词返回truthy for的所有元素的数组。谓词由三个参数调用:(value、index | key、collection)。
注意:与u.remove不同,此方法返回一个新数组
var filter = _.filter(data.places, function(p) {
if (p.length === 1) {
// write logic to return true or not if locaion is onnly 1
} else {
// write logic for more than 1 location id
}
});
有关更多详细信息shry其返回匹配位置,我需要包含所需位置ID的完整位置对象。const filteredPlaces=data.places.filter(element=>element.location.some(/**/)代码>将更加高效和清晰。
var filterplaces = _.filter(data.places, function(place) {
return this.state.selectedLocationIds.indexOf(place.location.location_id) >= 0;
});
var filter = _.filter(data.places, function(p) {
if (p.length === 1) {
// write logic to return true or not if locaion is onnly 1
} else {
// write logic for more than 1 location id
}
});