Loopback通过其元素的子字符串过滤数组中的对象

时间:2017-08-16 10:10:20

标签: javascript angularjs arrays loopbackjs

我有一个对象数组。我想以这样的方式过滤它,它只返回元素值与特定过滤器匹配的对象。就像元素值包含一些字符串一样,该对象将在返回的数组中。

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

[
    { "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?

3 个答案:

答案 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;
&#13;
&#13;