为什么过滤器不能提供与迭代一样的结果?
我已经提取对象的数组,从下面的原始数据:https://gist.githubusercontent.com/Miserlou/c5cd8364bf9b2420bb29/raw/2bf258763cdddd704f8ffd3ea9a3e81d25e2c6f6/cities.json为什么过滤器不能提供与迭代一样的结果?
我只想说,数据看起来是这样的:
[0 ... 99] : 城市 : “纽约” growth_from_2000_to_2013 : “4.8%” 纬度 : 40.7127837 经度 : -74.005 9413 人口 : “8405837” 排名 : “1” 状态 : “纽约” 原 : 对象: {城市: “洛杉矶”,growth_from_2000_to_2013:“ 4.8%“,纬度:34.0522342,经度:-118.2436849,人口:”3884307“,...}
我已将此存储为const JSON_LOCS
,在下面的代码中引用。
我试图过滤下来寻找包含一些特定测试的城市。我已经通过两种不同的方式接近它。一种方法似乎可行,但Array.prototype.filter()
没有。
const test = []; for (let t of JSON_LOCS) {
if (t.city.includes('las')) {
test.push(t);
}
}
const test2 = JSON_LOCS.filter(loc => { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
loc.city.includes('las');
});
console.log(test); // Yields a couple of results
console.log(test2); // Always empty! :(
回答:
代替此行
oc.city.includes('las');
写这条线
return oc.city.includes('las');
你只是忘记了这一步的,在这种情况下,将返回undefined
回答:
删除{}
const test2 = JSON_LOCS.filter(loc => { // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter loc.city.includes('las');
});
到
const test2 = JSON_LOCS.filter(loc => // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter loc.city.includes('las'); // When not wrapped into {} it assumes its the return statement
);
以上是 为什么过滤器不能提供与迭代一样的结果? 的全部内容, 来源链接: utcz.com/qa/265739.html