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 将对象的特定属性转换为对象数组_Javascript_Arrays_Object - Fatal编程技术网

Javascript 将对象的特定属性转换为对象数组

Javascript 将对象的特定属性转换为对象数组,javascript,arrays,object,Javascript,Arrays,Object,这是我最初的目标: Data = { aesthetic: { heritage: 'aesthetic', description: 'sdokjosk', value: 5 }, architectural: { heritage: 'architectural', description: 'doodsjdj', value: 1 }, historical: { heritage: 'historical',

这是我最初的目标:

Data = {
  aesthetic: {
    heritage: 'aesthetic',
    description: 'sdokjosk',
    value: 5
  },
  architectural: {
    heritage: 'architectural',
    description: 'doodsjdj',
    value: 1
  },
  historical: {
    heritage: 'historical',
    description: 'dcnsdlnckdjsncksdjbk kjdsbcjisdc hsdk chjsd cjhds ',
    value: 4
  },
  score: 3
};
我想编写一个函数,用于遍历对象,并将仅具有“heritage”“description”和“value”的属性转换为如下所示的数组:

 [{
    "heritage": "aesthetic",
    "description": "sdokjosk",
    "value": 5
 },
  {
    "heritage": "architectural",
    "description": "doodsjdj",
    "value": 1
  },
  {
    "heritage": "historical",
    "description": "dcnsdlnckdjsncksdjbk kjdsbcjisdc hsdk chjsd cjhds ",
    "value": 4
  }
]
这就是我尝试过的:

对象值(数据)
但这将返回一个数组,该数组末尾带有score属性中的3。您可以使用获取值的
数组,然后使用仅过滤其中的对象

这是您的代码应该如何编写的:

var result = Object.values(Data).filter(x => typeof x == 'object');
演示:

这是一个有效的演示片段:

var数据={
美学:{
遗产:“美学”,
描述:'sdokjosk',
价值:5
},
建筑:{
遗产:“建筑”,
描述:“doodsjdj”,
价值:1
},
历史:{
遗产:"历史",,
描述:“dcnsdlnckdjsncksdjbk kjdsbcjisdc hsdk chjsd cjhds”,
价值:4
},
得分:3分
};
var result=Object.values(Data.filter)(x=>typeof x=='Object');
控制台日志(结果)
您可以使用获取值的
数组,然后使用仅过滤其中的对象

这是您的代码应该如何编写的:

var result = Object.values(Data).filter(x => typeof x == 'object');
演示:

这是一个有效的演示片段:

var数据={
美学:{
遗产:“美学”,
描述:'sdokjosk',
价值:5
},
建筑:{
遗产:“建筑”,
描述:“doodsjdj”,
价值:1
},
历史:{
遗产:"历史",,
描述:“dcnsdlnckdjsncksdjbk kjdsbcjisdc hsdk chjsd cjhds”,
价值:4
},
得分:3分
};
var result=Object.values(Data.filter)(x=>typeof x=='Object');

控制台日志(结果)如果您想检查您提到的所有钥匙,您可以选择以下选项:

Object.values(Data).filter(function(data){return data["heritage"] && data["description"] && data["value"]})

如果您想检查您提到的所有钥匙,您可以选择以下选项:

Object.values(Data).filter(function(data){return data["heritage"] && data["description"] && data["value"]})

您希望对象具有指定的3个属性,还是只希望排除
value
键的考虑?“我想编写一个函数”-什么阻止了你?发布你自己的努力。@vibhor1997a我有。@NikhilAggarwal不会有超过3个属性主要的事情是去掉score属性你想要指定3个属性的对象还是只想排除
键?“我想写一个函数”-什么阻止了你?发布你自己的努力。@vibhor1997a我有。@NikhilAggarwal没有超过3个属性,主要的是去掉score属性