我有一个模糊的想法,我想怎么做,但我被困住了。如果有人能建议我是否走在正确的方向,或者我应该尝试其他的东西,你会很感激吗?
但在外行方面,我在想,如果数组满足像(array[0][2] == 'default' || array[0][2] == 'thailand')这样的条件,我将得到一个新的[true, false, false, true, ...]数组,然后使用新的真/假数组,如果数组为false,我将使用它根据索引对数组进行过滤?
array = array.filter(function(e) {
if ( array[0][2] == 'default' || array[0][2] == 'thailand' ) {
return e
}
})以下是更多细节:
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)存在的数组?
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预期答案:
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],
]发布于 2018-03-16 17:21:48
做这样的事:
首先,定义过滤器(注意,过滤器是返回true\false的函数)
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]然后,当对数据进行过滤时,您可以这样做:
array.filter(x => filters.every(f => f(x))在这种方法中,您的代码看起来要简单得多,添加\ remove过滤器会更容易,并且您将能够轻松地进行一些更改。
祝好运!
发布于 2018-03-16 17:19:32
在筛选器中,您需要使用参数,而不是数组本身。
另外,您需要返回true或false,而不是项目。如下所示:
array = array.filter(function(e) {
if ( e[2] == 'default' || e[2] == 'indonesia' ) {
return true;
}
return false;
})https://stackoverflow.com/questions/49325819
复制相似问题