我有一个像下面的对象:如何获取对象数组值的属性名称?
myObj = {
"name":"John",
"age":30,
"cars":[ "Ford", "BMW", "Fiat" ]
}
我怎么能知道属性名“车”当我输入“宝马”?当我在函数中传递参数“BMW”时,我需要一个需要返回属性名称“cars”的函数。
我有一个像下面的对象:如何获取对象数组值的属性名称?
myObj = {
"name":"John",
"age":30,
"cars":[ "Ford", "BMW", "Fiat" ]
}
我怎么能知道属性名“车”当我输入“宝马”?当我在函数中传递参数“BMW”时,我需要一个需要返回属性名称“cars”的函数。
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');
非常感谢....... :) –
不客气:) –
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'
希望这有助于!
你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'))
请告诉我们函数。 –
您是否尝试过循环对象值并将它们与函数参数进行比较? –