Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环json并获取nodejs中的特定值_Javascript_Arrays_Node.js_Json_Loops - Fatal编程技术网

Javascript 循环json并获取nodejs中的特定值

Javascript 循环json并获取nodejs中的特定值,javascript,arrays,node.js,json,loops,Javascript,Arrays,Node.js,Json,Loops,我有一个场景,在这个场景中,我试图解析下面的json,并获取键“name”和键“id”的所有值,我将进一步将其存储在变量或数组中 [ { "metadata": { "id": "vvvvvvvvvvvvv", "url": "cccccccccccccc", "created_at": "2019-09-06T08:40:41Z", "updated_at": "2019-09-06

我有一个场景,在这个场景中,我试图解析下面的json,并获取键“name”和键“id”的所有值,我将进一步将其存储在变量或数组中

  [
      {
        "metadata": {
          "id": "vvvvvvvvvvvvv",
          "url": "cccccccccccccc",
          "created_at": "2019-09-06T08:40:41Z",
          "updated_at": "2019-09-06T13:25:46Z"
        },
        "entity": {
          "name": "app1",
          "b_enabled": false,
          "d_url": "xxxxxs"
        }
      },
        {
        "metadata": {
          "id": "vvvvvvvvvvccc",
          "url": "cccccccccccccc",
          "created_at": "2019-09-06T08:40:41Z",
          "updated_at": "2019-09-06T13:25:46Z"
        },
        "entity": {
          "name": "app2",
          "b_enabled": false,
          "d_url": "xxxxxs"
        }
      },
        {
        "metadata": {
          "id": "vvvvvvvvvvddd",
          "url": "cccccccccccccc",
          "created_at": "2019-09-06T08:40:41Z",
          "updated_at": "2019-09-06T13:25:46Z"
        },
        "entity": {
          "name": "app3",
          "b_enabled": false,
          "d_url": "xxxxxs"
        }
      },
        {
        "metadata": {
          "id": "vvvvvvvvvveee",
          "url": "cccccccccccccc",
          "created_at": "2019-09-06T08:40:41Z",
          "updated_at": "2019-09-06T13:25:46Z"
        },
        "entity": {
          "name": "app4",
          "b_enabled": false,
          "d_url": "xxxxxs"
        }
      },
        {
        "metadata": {
          "id": "vvvvvvvvvvfff",
          "url": "cccccccccccccc",
          "created_at": "2019-09-06T08:40:41Z",
          "updated_at": "2019-09-06T13:25:46Z"
        },
        "entity": {
          "name": "app5",
          "b_enabled": false,
          "d_url": "xxxxxs"
        }
    }
    ]
我迄今为止所做的尝试(在此之后不确定如何继续,因为这本身提供了错误的结果)

产量

key=entity.name

val=metadata.id

每个文档的

方法很简单。初始化空对象。将键、val放入空对象中

var result = {}
jsonData.forEach(x => {
   result[x.entity.name]= x.metadata.id
})
输出中的

key=entity.name

val=metadata.id

每个文档的

方法很简单。初始化空对象。将键、val放入空对象中

var result = {}
jsonData.forEach(x => {
   result[x.entity.name]= x.metadata.id
})

输出:

{ app1: 'vvvvvvvvvvvvv',
  app2: 'vvvvvvvvvvccc',
  app3: 'vvvvvvvvvvddd',
  app4: 'vvvvvvvvvveee',
  app5: 'vvvvvvvvvvfff' }
输出:

{ app1: 'vvvvvvvvvvvvv',
  app2: 'vvvvvvvvvvccc',
  app3: 'vvvvvvvvvvddd',
  app4: 'vvvvvvvvvveee',
  app5: 'vvvvvvvvvvfff' }
这里我使用,以便我可以对数据使用方法,我在传递给map的回调中使用,将值
metadata.id
entity.name
拉入函数的范围。然后返回一个对象,其中
entity.name
作为键,
metadata.id
作为值。
map
的返回值是一个新数组,因此我可以使用它将数组转换为不同的数据结构。在
reduce
的每次迭代中,参数
current
将是
map
每次迭代中返回的单个对象。因为
Object.keys(current)
的长度始终为1,所以我可以使用destructuring拉出唯一的键名,并使用key/
name
填充返回对象

const json=`[
{
“元数据”:{
“id”:“VVVVV”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app1”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVVCC”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app2”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV DDD”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app3”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVEE”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app4”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV FFF”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app5”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
}
]`;
const result=JSON.parse(JSON)
.map({元数据:{id},实体:{name})=>{
返回{[name]:id};
})
.减少((上一个,当前)=>{
const[name]=Object.keys(当前);
上一个[名称]=当前[名称];
返回上一个;
}, {});
控制台日志(结果)
我在这里使用,因此我可以对数据使用方法,我在传递给map的回调中使用,将值
metadata.id
entity.name
拉入函数的范围。然后返回一个对象,其中
entity.name
作为键,
metadata.id
作为值。
map
的返回值是一个新数组,因此我可以使用它将数组转换为不同的数据结构。在
reduce
的每次迭代中,参数
current
将是
map
每次迭代中返回的单个对象。因为
Object.keys(current)
的长度始终为1,所以我可以使用destructuring拉出唯一的键名,并使用key/
name
填充返回对象

const json=`[
{
“元数据”:{
“id”:“VVVVV”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app1”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVVCC”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app2”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV DDD”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app3”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VVEE”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app4”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
},
{
“元数据”:{
“id”:“VV FFF”,
“url”:“CCCC”,
“创建时间”:“2019-09-06T08:40:41Z”,
“更新时间”:“2019-09-06T13:25:46Z”
},
“实体”:{
“名称”:“app5”,
“b_enabled”:false,
“d_url”:“XXXXX S”
}
}
]`;
const result=JSON.parse(JSON)
.map({元数据:{id},实体:{name})=>{
返回{[name]:id};
})
.减少((上一个,当前)=>{
const[name]=Object.keys(当前);
上一个[名称]=当前[名称];
返回上一个;
}, {});
控制台日志(结果)<
{ app1: 'vvvvvvvvvvvvv',
  app2: 'vvvvvvvvvvccc',
  app3: 'vvvvvvvvvvddd',
  app4: 'vvvvvvvvvveee',
  app5: 'vvvvvvvvvvfff' }
var output = {};
your_array.forEach(item => {output[item.entity.name] = item.metadata.id});

// output will now be: 
//  { 
//    "app1"   :  "vvvvvvvvvvvvv", 
//    "app2"   :  "vvvvvvvvvvccc",
//    "app3"   :  "vvvvvvvvvvddd",
//    "app4"   :  "vvvvvvvvvveee",
//    "app5"   :  "vvvvvvvvvvfff" 
//  }