通过其元素的子字符串在数组中循环过滤器对象

问题描述:

我有一个对象数组。我想过滤它,它只返回元素值匹配特定过滤器的对象。就像元素值包含一些字符串一样,该对象将在返回数组中。通过其元素的子字符串在数组中循环过滤器对象

例如,如果我有一个这样的阵列:

[ 
    { "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);

+1

由于一吨.. :) – NameNotFound

您可以使用下面的代码做到这一点,它使用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]); 
 
    }) 
 
    } 
 
} 
 
})

+0

但是它不会减慢这个过程吗? – NameNotFound

+0

与上述答案相比,是的! @Ani – Aayushi

+0

好的。无论如何感谢您的答案。 – NameNotFound