我试图从另一个数组中过滤掉一个数组的值。使用Javascript的过滤方法时,我的脚本看起来像这样。
public class App extends Application {
@Override public void onCreate() {
super.onCreate();
// Make sure we use vector drawables
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
}
}
根据文档,在我运行过滤器函数后控制var notUsed = ["Advanced Tac. Training Area", "Dunbarton Railroad Yard"];
var areas = ["A Area", "Advanced Tac. Training Area", "B Area", "Dunbarton Railroad Yard", "C Area"];
areas.filter(function(){
return areas = notUsed;
})
console.log(areas);
数组时,数组应该如下所示
areas
但是,这不是发生了什么。相反,我获得了"A Area", "B Area", "C Area"
数组的值,因此它基本上用notUsed
数组替换了area数组。任何人都可以解释为什么会发生这种情况以及如何在没有notUsed
数组值的情况下获取areas
数组?
如果已经提出这个问题,请在评论中告诉我并链接到已回答的问题。这样我就可以删除这个并消除重复。
答案 0 :(得分:1)
两个错误。
areas = notUsed
只会将notUsed
的值分配给areas
,但它不会对它们进行比较。
filter
返回一个新数组。它不会改变原始数组。
可能你可以像这样写
areas = areas.filter(function (area) {
return notUsed.indexOf(area) === -1;
});
现在,notUsed.indexOf(area)
返回area
数组中notUsed
的索引。如果找不到,那么它将返回-1
。
另外,请参阅我们将filter
的结果分配回areas
。
答案 1 :(得分:0)
您还没有正确理解过滤器的使用。
var notUsed = ["Advanced Tac. Training Area", "Dunbarton Railroad Yard"];
var areas = ["A Area", "Advanced Tac. Training Area", "B Area", "Dunbarton Railroad Yard", "C Area"];
var res = areas.filter(function(ele){
return (notUsed.indexOf(ele) == -1)
})
console.log(res);
答案 2 :(得分:0)
Filter函数应根据您实现的条件测试数组中的值。在您的示例中不是这种情况。 Filter Function
这可能是一个可能的解决方案。
var notUsed = ["Advanced Tac. Training Area", "Dunbarton Railroad Yard"];
var areas = ["A Area", "Advanced Tac. Training Area", "B Area", "Dunbarton Railroad Yard", "C Area"];
var filtered = areas.filter(value => { return notUsed.indexOf(value) === -1 })
console.log(filtered);
答案 3 :(得分:0)
margin
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
filter()