首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在/or中动态设置if JavaScript条件?

如何在/or中动态设置if JavaScript条件?
EN

Stack Overflow用户
提问于 2018-03-16 16:47:35
回答 2查看 63关注 0票数 0

我有一个模糊的想法,我想怎么做,但我被困住了。如果有人能建议我是否走在正确的方向,或者我应该尝试其他的东西,你会很感激吗?

但在外行方面,我在想,如果数组满足像(array[0][2] == 'default' || array[0][2] == 'thailand')这样的条件,我将得到一个新的[true, false, false, true, ...]数组,然后使用新的真/假数组,如果数组为false,我将使用它根据索引对数组进行过滤?

代码语言:javascript
复制
array = array.filter(function(e) { 
  if ( array[0][2] == 'default' ||  array[0][2] == 'thailand' ) { 
    return e 
  } 
})

以下是更多细节:

代码语言:javascript
复制
 var array = [
    [9117.0, 5184.0, default, Chair, 0.0, th, in|ae, false, men], 
    [9117.0, 5184.0, indonesia, television, 0.0, id, in|ae, false, men], 
    [9117.0, 5184.0, indonesia, television, 82.0, sg, in|ae, false, men], 
    [9431.0, 5456.0, default, television, 0.0, au, , false, men], 
    [9431.0, 5456.0, default, television, 0.0, au, , true, men], 
    [9431.0, 5456.0, default, television, 0.0, th, , false, men], 
    [9431.0, 5456.0, default, television, 0.0, th, , true, men], 
    [9431.0, 5456.0, default, television, 94.0, sg, , true, men], 
    [9431.0, 5456.0, default, television, 0.0, id, , false, men], 
    [9431.0, 5456.0, default, television, 0.0, id, , true, men], 
    [9431.0, 5456.0, thailand, television, 94.0, sg, , false, men], 
    [9152.0, 5225.0, default, drawer, 0.0, th, in|ae, false, men], 
    [9152.0, 5225.0, default, television, 70.0, sg, in|ae, false, men], 
    [9152.0, 5225.0, default, television, 0.0, id, in|ae, false, men], 
    [9152.0, 5225.0, default, television, 4.0, au, in|ae, false, men], 
    [9221.0, 5335.0, indonesia, television, 0.0, th, in|ae, false, men], 
    [9221.0, 5335.0, indonesia, television, 2.0, au, in|ae, false, men], 
    [9221.0, 5335.0, default, television, 0.0, id, in|ae, false, men], 
    [9221.0, 5335.0, default, drawer, 0.0, sg, in|ae, false, men]
  ]

我是否需要一个数组(filter1 && filter2 && filter3)存在的数组?

代码语言:javascript
复制
var filter1= [['default'], ['thailand']] //if ( array[0][2] == 'default' ||  array[0][2] == 'thailand' ) => true
var filter2 = [['television']] //if ( array[0][3] == 'television' ) =>true
var filer3 = [['true']] //if ( array[0][7] == 'true' ) => true

预期答案:

代码语言:javascript
复制
var answer = [
  [9431.0, 5456.0, default, television, 0.0, au, , true, men], 
  [9431.0, 5456.0, default, television, 0.0, th, , true, men], 
  [9431.0, 5456.0, default, television, 94.0, sg, , true, men], 
  [9431.0, 5456.0, default, television, 0.0, id, , true, men], 
  [9431.0, 5456.0, thailand, television, 94.0, sg, , true, men], 
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-16 17:21:48

做这样的事:

首先,定义过滤器(注意,过滤器是返回true\false的函数)

代码语言:javascript
复制
var filter1 = obj => obj[0][2] === 'default' || obj[0][2] === 'thailand';
var filter2 = obj => // do the filter
var filter3 = obj => // do the filter

var filters = [filter1, filter2, filter3]

然后,当对数据进行过滤时,您可以这样做:

代码语言:javascript
复制
array.filter(x => filters.every(f => f(x))

在这种方法中,您的代码看起来要简单得多,添加\ remove过滤器会更容易,并且您将能够轻松地进行一些更改。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2018-03-16 17:19:32

在筛选器中,您需要使用参数,而不是数组本身。

另外,您需要返回true或false,而不是项目。如下所示:

代码语言:javascript
复制
array = array.filter(function(e) { 
    if ( e[2] == 'default' ||  e[2] == 'indonesia' ) { 
       return true;
    }
    return false;
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49325819

复制
相关文章

相似问题

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