2016-10-22 55 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']]