通过查找特定值来查找对象列表中的对象

时间:2016-12-26 01:11:37

标签: javascript node.js object data-structures

我有动态对象列表。动态,因为数据下对象的数字标识始终在变化/增加。我已经有一个变量被定义为数据下的对象数量。变量如下

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

然后遍历数据下的每个对象我运行此循环

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

我希望能够请求包含特定值的对象的数字标识,例如“Banana”,“Apple”或“Grape”。所以我希望能够使用像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",
    }
 }

}

我的问题:如何使用特定值(名称:“Apple”,名称:“Banana”等...)来查找其所在对象的身份。

1 个答案:

答案 0 :(得分: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));