带有标题的数组的javascript过滤器

带有标题的数组的javascript过滤器,javascript,Javascript,我有以下使用Chrome的代码 <script> var arr = [{ "id": 1, "fn": "bill", "ln": "blogs" }, { "id": 2, "fn": "jim", "ln": "jones" }, { "id": 3, "fn": "bill", "ln": "smith" }]; var lookFor = "bill"; var result = arr.filter(

我有以下使用Chrome的代码

<script>
var arr = [{
    "id": 1,
    "fn": "bill",
    "ln": "blogs"
}, {
    "id": 2,
    "fn": "jim",
    "ln": "jones"
}, {
    "id": 3,
    "fn": "bill",
    "ln": "smith"
}];
var lookFor = "bill";
var result = arr.filter(function(item) {
    return if (item.ln == lookFor) return true;
});
alert(result.length);
alert(result[0]["id"] + result[0]["fn"] + result[0]["ln"]);
</script>
我试图过滤数组并返回第一个名字fn是bill的数组。在messagebox中返回id、fn和ln

我可能缺少一些关于这个语法的知识。

试试这个

var result = arr.filter(function(item) {
    return item.fn === lookFor;
});
…返回第一个名字fn为bill的名称

但在代码中使用item.ln。还有,为什么要使用双返回语句

return if (item.ln == lookFor) return true;
你只需要返回真或假,你可以这样做

  return item.fn === lookFor; 
如果item.fn等于lookfort,则为true,否则为false

你应该使用

var arr = [{
    "id": 1,
    "fn": "bill",
    "ln": "blogs"
}, {
    "id": 2,
    "fn": "jim",
    "ln": "jones"
}, {
    "id": 3,
    "fn": "bill",
    "ln": "smith"
}];
var lookFor = "bill";
var result = arr.filter(function(item) {
      return item.ln === lookFor;
});
alert(result.length);
alert(result[0]["id"] + result[0]["fn"] + result[0]["ln"]);

但是我猜你想要的不是ln,而是fn,因为他们的ln不等于bill。

为什么在同一行中有多个return?正确的语法应该是return item.ln==lookfort。如果某个东西返回真的或者返回假的,那么就永远不需要了——它总是可以用简单的返回来重放!!如果表达式总是导致布尔值,则返回某个值或返回某个值;是的,我的意思是fn。谢谢你的===和摆脱如果工作