2016-05-15 33 views
0

所以过滤对象,我有这个简单的数据集:JavaScript。通过multple性能

现场演示:http://jsbin.com/ramuwow/edit?js,console

var members = [{ 
    "id": "1", 
    "firstName": "JOHN", 
    "lastName": "MARTY" 
}, { 
    "id": "2", 
    "firstName": "JONES", 
    "lastName": "SMITH" 
}, { 
    "id": "3", 
    "firstName": "MARY", 
    "lastName": "DOE" 
}, { 
    "id": "4", 
    "firstName": "MARGARET", 
    "lastName": "KANE" 
}]; 

,我必须从输入字符串的一块来搜索这些对象。

我可以做名字和姓氏到id。但我不能做第一个和最后一个名字。

这里是我到目前为止有:

var members = [{"id":"1","firstName":"JOHN","lastName":"MARTY"},{"id":"2","firstName":"JONES","lastName":"SMITH"},{"id":"3","firstName":"MARY","lastName":"DOE"},{"id":"4","firstName":"MARGARET","lastName":"KANE"}]; 

var filteredNames = members.filter(function(n){ 
    var query = "MARY DO"; 

    var splitUp = query.split(" "); 
    console.log(splitUp); 

    return n.firstName.indexOf(query) > -1 ? n : false || 
     n.lastName.indexOf(query) > -1 ? n : false || 
     n.id.indexOf(query) > -1 ? n : false || 
     n.firstName.indexOf(splitUp[0]) > -1 && n.lastName.indexOf(splitUp[1]); 
}); 

console.log(filteredNames); 

,并返回:

["MARY", "DO"] 
["MARY", "DO"] 
["MARY", "DO"] 
["MARY", "DO"] 
[] 

我在做什么错?应出现MARY DOE的对象。

+2

您对'.indexOf()进行的最后一次调用缺少与'-1'的比较。 – Pointy

+0

此外,您的代码*日志*这些数组,但实际的*返回值*是最后一个(空)数组。 – Pointy

回答

1

问题:您最近错过了与-1的比较。

解决方法:最后 相较于-1,你会得到你的对象为:

var members = [{"id":"1","firstName":"JOHN","lastName":"MARTY"},{"id":"2","firstName":"JONES","lastName":"SMITH"},{"id":"3","firstName":"MARY","lastName":"DOE"},{"id":"4","firstName":"MARGARET","lastName":"KANE"}]; 

var filteredNames = members.filter(function(n){ 
    var query = "MARY DO"; 

    var splitUp = query.split(" "); 
    console.log(splitUp); 

    return n.firstName.indexOf(query) > -1 ? n : false || 
     n.lastName.indexOf(query) > -1 ? n : false || 
     n.id.indexOf(query) > -1 ? n : false || 
     n.firstName.indexOf(splitUp[0]) > -1 && n.lastName.indexOf(splitUp[1] > -1); 
}); 

console.log(filteredNames); 

OUTPUT:

["MARY", "DO"] 
["MARY", "DO"] 
["MARY", "DO"] 
["MARY", "DO"] 
[[object Object] { 
    firstName: "MARY", 
    id: "3", 
    lastName: "DOE" 
}] 

@Credit去@Pointy

JSBin链接:http://jsbin.com/geziwetudi/edit?js,console

+0

啊!我怎么没有看到!谢谢。 – red