我如何搜索标题'来自对象阵列&只返回与searchTerm匹配的对象?

时间:2017-08-26 10:06:50

标签: javascript jquery

有点新手!我试图根据一系列搜索结果重新填充图像的旋转木马。但真的遇到了惊人的问题。

我使用的是JS / Jquery,并且有一个从我的api中存在的对象数组:

let arrayOfObjects = [ 
{id: 0, title: 'Beauty & The Beast', img: 'https://imgthing1.com' }, 
{id: 1, title: 'The Brainiac', img: 'https://imgthing2.com' }, 
{id: 2, title: 'Mac and Me', img: 'https://imgthing3.com' }
];

然后我有我的searchTerm我希望过滤掉这个数组,然后返回一个新的结果数组: -

function checkWords(searchTerm, arr) {
    let results = [];
    let st = searchTerm.toLowerCase();

// **** i map through the array - if the search term (say its 'a' is the same
// as the first character of an object's 'title'... then it stores
// that object in results, ready to be rendered. ****

    arr.map((each) => {
      if (st === each.title.charAt(0)) {
         results.push(each)
      }
    })

    console.log(finalResults);

}

但我无法解决如何保持匹配......基于: '衣' vs' Beauty&野兽' - 通过。 '打' vs' Beauty&野兽' - 失败。

1 个答案:

答案 0 :(得分:4)

您可以使用Array#filter并检查字符串是否包含零位的所需字符串。



let arrayOfObjects = [{ id: 0, title: 'Beauty & The Beast', img: 'https://imgthing1.com' }, { id: 1, title: 'The Brainiac', img: 'https://imgthing2.com' }, { id: 2, title: 'Mac and Me', img: 'https://imgthing3.com' }];


function checkWords(searchTerm, arr) {
    let st = searchTerm.toLowerCase();
    return arr.filter(each => each.title.toLowerCase().indexOf(st) === 0);
}

console.log(checkWords('bea', arrayOfObjects));