2017-07-12 46 views
0

JavaScriptの配列内の値を検出するだけで、配列のタイトル/名前を取得する方法が必要です。javascript/jqueryを使用してjson変数からjson文字列名を取得

私はgreetingfoodの配列があるjson配列を持っています。変数xhiに等しく、変数ypizzaに等しい。

 

    var $arrays = {greeting: ['hello', 'hi'], food: ['pizza', 'cookie']}; 
    var x = 'hi', 
     y = 'pizza'; 

私は今xためgreetingの名前を返す必要がある、とyためfoodの名前。

 

    if(x=='hi') { 
     alert($array.greeting); // alert('greeting'); 
    } 
    if(y=='pizza') { 
     alert($array.food); // alert('food'); 
    } 

どのようにすれば、これはJavascriptまたはjQueryでうまくいくのでしょうか?

+0

を=逢引==または====が条件であります評価 – Dalorzo

+1

これはjQueryとは関係ありません。また、なぜオブジェクトを引用符で作成していますか? – Seblor

答えて

1

配列を含むオブジェクトのサイズや構造に応じて、それらのキーを反復処理して、値(配列)に探している値が含まれているキーを見つけることができます。それはどのように見えるかです。

var $arrays = { 
 
    "greeting": ['hello', 'hi'], 
 
    "food": ['pizza', 'cookie'] 
 
}; 
 
var x = 'hi', 
 
    y = 'pizza'; 
 

 
function getContainerName(value) { 
 
    return Object.keys($arrays).find(function(key) { 
 
    return $arrays[key].find(function(elem) { 
 
     return elem === value; 
 
    }) 
 
    }); 
 
} 
 

 
console.log(getContainerName(x)); 
 
console.log(getContainerName(y));

ES6構文の代わりに

return Object.keys($arrays).find(key => $arrays[key].find(elem => elem === value));


UPDATE - 値の配列のために、この検索を行うと、プロパティの名前を見つけるには を含むLアレイにおける値、そうのような、上記のコードと一緒に .every()関数を使用することができますJavaScriptのいずれかで

y = ['chips', 'pizza'], x = {"food":['banana', 'carrot', 'pizza', 'wheat', 'chips']}; 
 

 
function getContainerName(obj, values) { 
 
    return Object.keys(obj).find(function(key) { 
 
    return values.every(value => obj[key].find(function(elem) { 
 
     return elem === value; 
 
    })); 
 
    }); 
 
} 
 

 
console.log(getContainerName(x, y));

+0

少し遅れて、xがその配列の特定の値を見つける必要がある配列だった場合、これはうまくいきますか?例えば。 「バナナ」、「ニンジン」、「ピザ」、「小麦」、「チップス」)} 'それで、それを見つける必要があります。チップとピザをx配列に入れているので、 'console.log(getContainerName(x))'は 'food'を返しますか? – Ackados

+0

@Ackadosが更新されました。見てください – mhodges

+0

最後に、配列に 'food'以上のものがあるように修正しました。greetingsを追加しましたが、yの' pizza'を 'hi'に変更すると定義されていません。 。 https://jsfiddle.net/u1zLm71f/ – Ackados

関連する問題