Javascript 用另一个数组替换一个数组的筛选方法
我试图从另一个数组中筛选出一个数组的值。当使用Javascript的过滤方法时,我的脚本如下所示Javascript 用另一个数组替换一个数组的筛选方法,javascript,arrays,filter,Javascript,Arrays,Filter,我试图从另一个数组中筛选出一个数组的值。当使用Javascript的过滤方法时,我的脚本如下所示 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()
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);
根据文档,当我在运行filter函数后控制台区域
数组时,数组应该是这样的
"A Area", "B Area", "C Area"
areas = areas.filter(function (area) {
return notUsed.indexOf(area) === -1;
});
然而,事实并非如此。相反,我得到的是notUsed
数组的值,因此它实际上是用notUsed
数组替换areas数组。有人能解释为什么会发生这种情况,以及我如何在没有未使用的数组值的情况下获取区域
数组吗
如果已经问过这个问题,请在评论中告诉我,并链接到已回答的问题。这样我就可以删除这一个并消除重复。您还没有正确理解过滤器的用法
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);
两个错误
areas=notUsed
只会将notUsed
的值分配给区域,而不会对它们进行比较
filter
返回一个新数组。它不会更改原始数组
也许你可以这样写
"A Area", "B Area", "C Area"
areas = areas.filter(function (area) {
return notUsed.indexOf(area) === -1;
});
现在,notUsed.indexOf(area)
返回notUsed
数组中区域的索引。如果找不到它,它将返回-1
另外,请参见我们将筛选的结果
分配回区域
筛选函数应根据您实施的条件测试数组中的值。你的例子不是这样的
这可能是一个可能的解决方案。
var notUsed=[“高级战术训练区”,“邓巴顿铁路站”];
var区域=[“A区域”、“高级战术训练区域”、“B区域”、“邓巴顿铁路场”、“C区域];
var filtered=areas.filter(值=>{return notUsed.indexOf(值)=-1})
console.log(过滤)
filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素
var notUsed=[“高级战术训练区”,“邓巴顿铁路站”];
var区域=[“A区域”、“高级战术训练区域”、“B区域”、“邓巴顿铁路场”、“C区域];
var out=区域。过滤器(功能(索引){
返回notUsed.indexOf(索引)=-1;
});
控制台。注销代码>太棒了,谢谢。您知道为什么文档中没有对此进行解释或演示吗?我知道它解释了原始数组没有更改,但它没有演示如何执行类似的操作。“至少,我没见过。”罗伯特说。