无法使用.find()从数组中过滤值

时间:2019-07-16 21:10:13

标签: javascript

我有一个函数可以从JSON文件⁠中返回一个值⁠–这很好。

$.get(url), function(result)

我有一个包含3个值的列表。如果result的值等于此列表中的值,那么我想向页面添加result。我试图在下面完成此操作,但是它不起作用,我也不知道为什么。

$.get("https://ipinfo.io/json", function (response) {
     $("#address").html("Location: " + response.city + ", " + response.region);
         $("#postcode").html("Postcode: " + response.postal);
 }, "jsonp");
 var array1 = [  {name: 'Edinburgh', tno: '0131 111 2222'},
                 {name: 'Fife', tno: '01383 111222'},
                 {name: 'Glasgow', tno: '0141 111 2222'} ];
 if address = array1.find(function(found) {
   return found.tno;
 });
 window.alert(found);
 // expected output: Fife
 /* HTML =
 <div id="address"></div>
 <div id="postcode"></div>
 */

1 个答案:

答案 0 :(得分:0)

您没有正确使用array1.find()。该功能需要将found.tno与您要搜索的电话号码进行比较。然后,您需要记录返回的值,而不是found,它是回调函数中的局部变量。

function lookup_tno(tno) {
  var array1 = [{
      name: 'Edinburgh',
      tno: '0131 111 2222'
    },
    {
      name: 'Fife',
      tno: '01383 111222'
    },
    {
      name: 'Glasgow',
      tno: '0141 111 2222'
    }
  ];
  var address = array1.find(el => el.tno == tno);
  if (address) {
    return address.name;
  }
}
console.log(lookup_tno('01383 111222'));