2017-01-30 13 views
2

私は以下のような物を持っている:ときに私は入力「BMW」オブジェクト配列値のプロパティ名はどのように取得できますか?

myObj = { 
    "name":"John", 
    "age":30, 
    "cars":[ "Ford", "BMW", "Fiat" ] 
} 

はどのようにして、プロパティ名「車」を知ることができますか?私は関数内で引数BMWを渡すときにプロパティ名 "cars"を返す必要がある関数が必要です。ここ

+0

ような何かを。 –

+0

オブジェクト値をループして関数のパラメータと比較しようとしましたか? –

答えて

2
function getKeyByitem(myObj, value) 
    for (var key in myObj) { 
    if (myObj.hasOwnProperty(key) && Array.isArray(myObj[key])) { 
     if(myObj[key].indexOf(value) != -1){ 
      return key; 
     } 
    } 
    } 
} 

var key = getKeyByitem(myObj, 'BMW'); 

デモhttps://plnkr.co/edit/wVFGcAKuml4rWuIaMx2K?p=preview

+0

ありがとうたくさん....... :) –

+0

あなたは大歓迎です:) –

0
myObj = { 
    "name":"John", 
    "age":30, 
    "cars":[ "Ford", "BMW", "Fiat" ] 
} 

var findKey = function (str) { 

    var keys = Object.getOwnPropertyNames(myObj); 
    var key = null; 

    var match = keys.some(function (k) { 
     key = k; 
     var val = myObj[key]; 

     if (Array.isArray(val)) { 
      return val.indexOf(str) >= 0; 
     } else { 
      return val.toString() === str; 
     } 

     return false; 
    }); 

    if (match) return key; 
} 

console.log(findKey('BMW'));  // 'cars' 
console.log(findKey('John'));  // 'name' 
console.log(findKey('30'));  // 'age' 

は、この情報がお役に立てば幸いです!

0

あなたCNAは私たちに機能を発揮してください。この

var myObj = { 
    "name": "John", 
    "age": 30, 
    "cars": ["Ford", "BMW", "Fiat"] 
} 

var getKey=function(elem) { 
var toReturn = ''; 
    for (var k in myObj) { // loop through the object 
    if(Array.isArray(myObj[k])){ 
     if(myObj[k].indexOf(elem) !== -1){ 
     toReturn = k; 
     } 
    } 
    else{ 
      if(myObj[k] === elem){ 
     toReturn = k 
     } 
    } 
    } 
    return toReturn; 
} 

console.log(getKey('BMW')) 

DEMO

関連する問題