如何筛选对象数组中包含指定兴趣的用户?
如何筛选对象数组中包含指定兴趣的用户?
嘿,我来帮你搞定这个问题!你现在拿到空数组的原因很简单:你的filter回调函数里没有返回正确的判断结果。
你用了forEach来遍历用户的兴趣数组,但forEach本身不会返回任何值,而且外层的filter回调也没给出明确的返回值,默认就会返回undefined(相当于false),所以筛选出来的结果自然是空数组啦。
正确的做法是用some()方法代替forEach,some()会遍历数组,只要找到一个符合条件的元素就会返回true,正好能帮我们判断这个用户的兴趣列表里有没有目标项。
修正后的代码是这样的:
var newArray = gesorteerdeMatchPercentages.filter((el) => { // 用some判断是否存在匹配的兴趣 return el.intresses.some((item) => { return item.naam === "Afrika"; }); }); console.log("new", newArray);
如果想让代码更简洁,还可以写成箭头函数的简写形式:
var newArray = gesorteerdeMatchPercentages.filter(el => el.intresses.some(item => item.naam === "Afrika") );
这样就能正确筛选出所有兴趣包含"Afrika"的用户了~
备注:内容来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

