2016-10-22 57 views
1

我有一个数组,看起来像这样:使用关键字过滤一个多维JS阵列

[['place', '1', '-2'],['place2', '1', '-2'],['place3', '1', '-3']] 

欲使用关键字从的onClick过滤它,因此它看起来像这样:

[['place', '1', '-2'],['place2', '1', '-2']] 

如果我的过滤器是例如-2。

我现在使用的代码(其中变量被过滤的对象):

return $.map(object, function (item, key) { 
    if (item[0] === value) { 
     return item; 
    } 
}); 

然后我把它用:

var markers = results(filter); 

但结果我得到的是空白。

希望我正在感如果不是真的很对不起,请让我知道,我可以尝试澄清。

+0

你喜欢在'-2'每一个元素进行搜索吗? –

+0

如果要过滤的值出现在数组中的任何位置,除了给定的答案外,还可以使用内部数组的索引。但它可能不适用于旧版浏览器。 –

+0

@NinaScholz在这个例子中是 – thekeemo

回答

0

你可以使用Array#filter它并返回经过滤项。

var data = [['place', '1', '-2'], ['place2', '1', '-2'], ['place3', '1', '-3']], 
 
    filtered = data.filter(function (a) { 
 
     return a[2] === '-2'; 
 
    }); 
 

 
console.log(filtered);

搜索任何项目与给定的字符串

var data = [['place', '1', '-2'], ['place2', '1', '-2'], ['place3', '1', '-3']], 
 
    filtered = data.filter(function (a) { 
 
     return a.some(function (b) { 
 
      return b === '-2'; 
 
     }); 
 
    }); 
 

 
console.log(filtered);

ES6,搜索任何项目与给定的字符串

var data = [['place', '1', '-2'], ['place2', '1', '-2'], ['place3', '1', '-3']], 
 
    filtered = data.filter(a => a.some(b => b === '-2')); 
 

 
console.log(filtered);

+1

这可能是工作,我会试试看感谢 – thekeemo

+0

这几乎工作的过滤器。我遇到的一个问题是返回一个[3] ==='文本';工作时返回一个[3] === filterfromfunction;没有任何想法? – thekeemo

+0

请添加'filterfromfunction'的内容。 –

0

试试这个

var places = [['place', '1', '-2'],['place2', '1', '-2'],['place3', '1', '-3']] 
    var result = places.filter(place => place[2] === '-2') 

    console.log(result) // [['place', '1', '-2'],['place2', '1', '-2']]