如何访问嵌套文档中的特定字段

时间:2018-08-24 08:46:10

标签: javascript json

我有这个JSON文件

def power(a, b):
   if b == 0:
      return 1;
   return a * power(a,  b - 1);

我想在通知数组中获取对象,但不知道该怎么做

例如: 有没有一种方法可以通过输入_id完成此功能:4ds4d654sd65d7zW45 我想得到这个

{
  "_id": "GgCRguT8Ky8e4zxqF",
  "services": {
    "notifications": [
      {
        "_id": "5hqPb76VhiwJ7Y86q5",
        "work": true,
        "maried": true
      },
      {
        "_id": "4ds4d654sd65d7zW45",
        "work": false,
        "married": true
      }
    ],
    "profile": {
      "name": "Janis"
    }
  }
}

无法弄清楚如何通过输入ID来访问通知并获得我想要的东西

能帮我吗?

3 个答案:

答案 0 :(得分:1)

您可以在函数内使用Array.find()

使用ES6

var obj = {
  "_id": "GgCRguT8Ky8e4zxqF",
  "services": {
    "notifications": [{
        "_id": "5hqPb76VhiwJ7Y86q5",
        "work": true,
        "maried": true
      },
      {
        "_id": "4ds4d654sd65d7zW45",
        "work": false,
        "married": true
      }
    ],
    "profile": {
      "name": "Janis"
    }
  }
}

function findObj(id) {
  return obj.services.notifications.find(({_id}) => _id === id);
}
console.log(findObj('4ds4d654sd65d7zW45'));

使用普通功能(适用于较旧的浏览器和IE)

var obj = {
  "_id": "GgCRguT8Ky8e4zxqF",
  "services": {
    "notifications": [{
        "_id": "5hqPb76VhiwJ7Y86q5",
        "work": true,
        "maried": true
      },
      {
        "_id": "4ds4d654sd65d7zW45",
        "work": false,
        "married": true
      }
    ],
    "profile": {
      "name": "Janis"
    }
  }
}

function findObj(id) {
  return obj.services.notifications.find(function(obj){
    return obj._id === id;
  });
}
console.log(findObj('4ds4d654sd65d7zW45'));

答案 1 :(得分:0)

是的。您可以使用Array.prototype.find方法。

const json = {
  "_id": "GgCRguT8Ky8e4zxqF",
  "services": {
    "notifications": [
      {
        "_id": "5hqPb76VhiwJ7Y86q5",
        "work": true,
        "maried": true
      },
      {
        "_id": "4ds4d654sd65d7zW45",
        "work": false,
        "married": true
      }
    ],
    "profile": {
      "name": "Janis"
    }
  }
};

function getNotificationById(json, id) {
  return json.services.notifications.find(n => n._id === id);
}

getNotificationById(json, '4ds4d654sd65d7zW45');

答案 2 :(得分:0)

您可以为此使用filter的{​​{1}}功能。

Array