首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OR运算符否定数组中的值

用OR运算符否定数组中的值
EN

Stack Overflow用户
提问于 2018-04-17 18:42:04
回答 3查看 137关注 0票数 3

这是一个非常简单的问题,但我无法把我的头脑围绕在这上面。我有一个有n个页面名的页面数组,我想运行一个循环,其中包含一些页面名。

代码语言:javascript
复制
var arr = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page']; 
for (var page in arr) {
     if (arr[page] !== "page-name" || arr[page] !== "some-more") {
        console.log(arr[page])
     }
 }

现在我想要的结果是:

代码语言:javascript
复制
page-name-two
page-3
another-page

我做错了什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-04-17 18:43:20

就拿&&代替||吧。

请为索引使用带有变量的for循环,而不是对象的键。

来源:

代码语言:javascript
复制
var arr = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page']; 
for (var i = 0; i < arr.length; i++) {
     if (arr[i] !== "page-name" && arr[i] !== "some-more") {
        console.log(arr[i]);
     }
 }

表达式

代码语言:javascript
复制
arr[i] !== "page-name" || arr[i] !== "some-more"

总是正确的,因为举个例子,如果

代码语言:javascript
复制
arr[i] === "page-name"

另外一部分是true,因为

代码语言:javascript
复制
"page-name" !== "some-more"`.
票数 3
EN

Stack Overflow用户

发布于 2018-04-17 18:44:32

您应该使用.filter()从第一个数组中筛选值,然后对结果数组执行想要执行的任何操作。这将避免编写大量OR / AND条件,以防需要筛选更多的值。

代码语言:javascript
复制
let arr1 = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page'],
    arr2 = ["page-name", 'some-more'];

let result = arr1.filter(s => !arr2.includes(s));

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2018-04-17 18:55:17

我会存储您想要消除的值,然后在所有页面名的列表上运行Array.filter来查找匹配项。如果名称匹配,则从最终数组中删除它。

代码语言:javascript
复制
// This can be a array of whatever strings you're looking to eliminate from the array
const valuesToFilter = ['page-name', 'some-more'];

// Your original array
const arr = ["page-name", "page-name-two", 'page-3', 'some-more', 'another-page']; 

// Use Array.filter to eliminate anything that doesn't pass the filter test
const filteredArr = arr.filter(page => {
  let foundMatch = false;

  valuesToFilter.forEach(value => {
    if (page === value) {
      foundMatch = true;
    }
  })

  if (!foundMatch) return page;
});

console.log(filteredArr);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49885324

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档