通过元素的子字符串环回过滤数组中的对象

Loopback filter objects in an array by substring of its element

我有一组对象。我想以这样一种方式对其进行过滤,即它仅 returns 元素值与特定过滤器匹配的对象。就像元素值包含一些字符串一样,该对象将存在于 returning 数组中。

例如,如果我有这样的数组:

[
    { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
    { "name":"BMW", "models":[ "320", "X3", "X5" ] },
    { "name":"Fiat", "models":[ "500", "Panda" ] }
]

我希望它按名称元素过滤,并且仅 return 名称元素中包含 "F" 的对象。喜欢就return只有以下

[
    { "name":"Ford", "models":[ "Fiesta", "Focus", "Mustang" ] },
    { "name":"Fiat", "models":[ "500", "Panda" ] }
]

如何在环回 angular sdk 中执行此操作?

您可以组合方法 Array.prototype.filter() and 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() and 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);

您需要做的是 运行 遍历您的数组并检查条件是否得到满足。

希望对您有所帮助。

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]);
  })
  }
}
})