2016-10-20 54 views
0

我試圖抓住特定數組值之前和之後的值。Javascript:在數組中的特定值之前和之後獲取值

像這樣

var arr = ["model", "color", "handle", "front", "extras"]; 
var category = "color"; 

for(i in array) { 
    if(array[i] == category { 
    //grab in this case model and handle 
    } 
} 

我已經嘗試了一些東西,如:添加鍵陣列,迫使陣列的一個對象,但沒有什麼幫助..提前

謝謝

+2

使用'indexOf'找到的元素。 ['for..in'不應該在數組上使用](http://stackoverflow.com/q/500504/5743988)。 – 4castle

回答

3

您可以使用indexOf來獲取類別的索引。然後知道索引可以執行-1或+1來獲取前後的值。

如果之前或之後沒有值,比如說在這個例子中,類別是「extras」,那麼它將返回undefined。在使用它之前,您可能需要檢查該值是否未定義。

var arr = ["model", "color", "handle", "front", "extras"]; 
var category = "color"; 

var i = arr.indexOf(category); 

var val1 = arr[i-1]; 
var val2 = arr[i+1]; 
+1

不要忘記測試它是否不是避免錯誤的第一個或最後一個索引。 – Robiseb

+0

@Robiseb好點。將編輯 – Kolby

+0

@Kolby感謝您的回答,此解決方案非常棒! – Swolschblauw

1

您可能會這樣做;

var arr = ["model", "color", "handle", "front", "extras"], 
 
    doit = (arr,str) => { fi = arr.indexOf(str); 
 
         return [arr[fi-1],str,arr[fi+1]]; 
 
         }; 
 

 
console.log(doit(arr,"model"));

+0

謝謝你的回答,也是一個很好的解決方案;) – Swolschblauw

相關問題