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()

我试图从另一个数组中筛选出一个数组的值。当使用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(){
    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;
    });
    
    控制台。注销太棒了,谢谢。您知道为什么文档中没有对此进行解释或演示吗?我知道它解释了原始数组没有更改,但它没有演示如何执行类似的操作。“至少,我没见过。”罗伯特说。