2016-12-26 159 views
0

我有动态对象列表。动态的,因为数据下的对象的数字身份始终在变化/增加。我已经有一个被定义为数据下对象数量的变量。变量是如下通过查找特定值通过对象列表查找对象

var numOfFruits = Object.keys(Fruits.data).length 

然后要经过每个对象下数据I运行这个循环

for(numOfFruits in Fruits.data) { 
    var objectsUnderData = Fruits.data[numOfFruits]; 
} 

我想能够请求对象的含有一定值这样的数字身份如“香蕉”,“苹果”或“葡萄”。所以,我希望能够用一个预先定义的变量一样var name = "Apple"并获得它的对象的身份

{ 
    "type": "fruits", 
    "data": { 
    "1": { 
     "id": 1, 
     "key": "Banana", 
     "name": "Banana", 
    }, 
    "2": { 
     "id": 2, 
     "key": "Orange", 
     "name": "Orange", 
    }, 
    "3": { 
     "id": 3, 
     "key": "Grape", 
     "name": "Grape", 
    }, 
    "4": { 
     "id": 4, 
     "key": "Apple", 
     "name": "Apple", 
    } 
} 

}

我的问题:我如何使用特定值(名称: “苹果”,名称:“香蕉”等)来查找它所处的对象的身份。下面

+0

哪里是你的具体问题陈述和问题?请花几分钟时间阅读[ask] – charlietfl

+0

@charlietfl,我对此感到抱歉,有点被带走。这是否清除了它?我试图解释我想做我最好的能力。如果不清楚,我很抱歉。 – L3gionOfDooM

回答

0

见功能fruitFinder

function fruitFinder (Fruits, name) { 
 
    for (fruit in Fruits.data) { 
 
    if (Fruits.data[fruit].name == name) { 
 
     return Fruits.data[fruit].id; 
 
    } 
 
    } 
 
} 
 

 
var Fruits = { 
 
    "type": "fruits", 
 
    "data": { 
 
    "1": { 
 
     "id": 1, 
 
     "key": "Banana", 
 
     "name": "Banana", 
 
    }, 
 
    "2": { 
 
     "id": 2, 
 
     "key": "Orange", 
 
     "name": "Orange", 
 
    }, 
 
    "3": { 
 
     "id": 3, 
 
     "key": "Grape", 
 
     "name": "Grape", 
 
    }, 
 
    "4": { 
 
     "id": 4, 
 
     "key": "Apple", 
 
     "name": "Apple", 
 
    } 
 
    } 
 
}; 
 

 
var name = "Apple"; 
 

 
console.log(fruitFinder(Fruits, name));

+0

非常感谢。工作得很好!你是一个拯救生命的人。 – L3gionOfDooM