我有一个对象数组。我想以这样的方式过滤它,它只返回元素值与特定过滤器匹配的对象。就像元素值包含一些字符串一样,该对象将在返回的数组中。
例如,如果我有这样的数组:
[
{ "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" ] }
]
我怎么做loopback angular sdk?
答案 0 :(得分:4)
您可以合并方法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);
答案 1 :(得分:3)
您可以使用以下代码执行此操作,它使用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);
答案 2 :(得分:1)
您需要做的是在数组中运行循环并检查条件是否满意。
希望这有帮助。
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]);
})
}
}
})
&#13;