2016-10-20 6 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"で、定義されていません。値を使用する前に値が未定義であるかどうかをチェックする必要があります。

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

関連する問題