通过其元素的子字符串在数组中循环过滤器对象
问题描述:
我有一个对象数组。我想过滤它,它只返回元素值匹配特定过滤器的对象。就像元素值包含一些字符串一样,该对象将在返回数组中。通过其元素的子字符串在数组中循环过滤器对象
例如,如果我有一个这样的阵列:
[
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
我希望它由名字元件来过滤和只返回在名称元素含有“F”的对象。喜欢它只会返回以下内容
[
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
我该如何做到这一点在回送角度sdk?
答
您可以结合的方法Array.prototype.filter()和String.prototype.includes():
const data = [{"name": "Ford","models": ["Fiesta", "Focus", "Mustang"]},{"name": "BMW","models": ["320", "X3", "X5"]},{"name": "Fiat","models": ["500", "Panda"]}];
const filterByStr = 'F';
const result = data.filter(obj => obj.name.includes(filterByStr));
console.log(result);
答
您可以使用下面的代码做到这一点,它使用Array.prototype.filter()和String.prototype.match()
let arr = [
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
]
arr = arr.filter(function(val){
return val && val.name && val.name.match(/F/g);
});
console.log(arr);
+0
干净的代码! @ marvel308 – Aayushi
答
你需要做的是在你的数组中运行一个循环,并检查条件是否满足。
希望这会有所帮助。
var arr=[
{ "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
{ "name":"BMW", "models":[ "320", "X3", "X5" ] },
{ "name":"Fiat", "models":[ "500", "Panda" ] }
];
document.addEventListener('DOMContentLoaded',function(){
console.log(arr.length);
for(var i=0;i<arr.length;i++){
if(arr[i].name.startsWith("F")){
Object.keys(arr[i]).forEach(function(key){
alert(arr[i][key]);
})
}
}
})
由于一吨.. :) – NameNotFound