如何从javascript对象中删除父键?

如何从javascript对象中删除父键?,javascript,javascript-objects,Javascript,Javascript Objects,我目前拥有此对象: schoolsObject = [{ "college_1": { "id":"college_1", "location":"Victoria", "name":"College One" }, "college_2": { "id":"college_2", "location":"Tasmania", "name":"College Two" } }];

我目前拥有此对象:

schoolsObject = [{
  "college_1":
    {
      "id":"college_1",
      "location":"Victoria",
      "name":"College One"
    },
  "college_2":
    {
      "id":"college_2",
      "location":"Tasmania",
      "name":"College Two"
    }
  }];
我想删除顶级关键点,即college_1、college_2,然后像这样“展平”对象,因此我没有“顶级”关键点:

flatSchoolsObject = 
    [{
      "id":"college_1",
      "location":"Victoria",
      "name":"College One"
    },
    {
      "id":"college_2",
      "location":"Tasmania",
      "name":"College Two"
    }];
这是我的最新尝试,我做了很多不同的尝试,但没有记录它们:

// schoolIDs = Object.keys(schoolsObject);
var schools = {};

for(var i=0; i<Object.keys(schoolsObject).length; i++){
  for (var property in schoolsObject) {
    if (schoolsObject.hasOwnProperty(property)) {
      schools[i] = {
        'id': schoolsObject[property]['id'],
        'name' : schoolsObject[property]['name'],
        'location': schoolsObject[property]['location'],
      };
    }
  }
}
console.log(schools)
//schoolIDs=Object.keys(schoolsObject);
var学校={};
对于(var i=0;i,您可以对
Object.keys
的结果使用
Array#map
来执行此操作。由于数组中只有一个对象,因此我们的操作如下:

schoolsObject = Object.keys(schoolsObject[0]).map(function(key) {
  return schoolsObject[0][key];
});
实例:

var schoolsObject=[
{
“学院1”:{
“id”:“学院1号”,
“地点”:“维多利亚”,
“姓名”:“学院一号”
},
“学院2”:{
“id”:“学院2”,
“地点”:“塔斯马尼亚”,
“姓名”:“第二学院”
}
}];
schoolsObject=Object.keys(schoolsObject[0]).map(函数(键){
返回schoolsObject[0][key];
});
console.log(schoolsObject);
(代码方面)最简单的解决方案可以使用和的组合:

如果
schoolsObject
数组有更多的条目,则必须稍微调整代码:

let step1 = schoolsObject.map( ( el ) => {
              return Object.keys( schoolsObject[0] )
                           .map( ( key ) => schoolsObject[0][ key ] );
            })
flatSchoolsObject = [].concat.apply( [], step1 );

(出于可读性的原因,引入了
step1
变量。)

您需要计算从schoolObject中的每个项目提取值的结果

flatSchoolsObject  = [].concat.call(
    schoolsObject.map(function(item) {
       return Object.keys(item).map(function(key) {
          return item[key];
       })
    })    
)
或者使用
Array.prototype.reduce

flatSchoolsObject = schoolsObject.reduce(function(acc, item) {
  return acc.concat(Object.keys(item).map(function(key){
     return item[key]
  })
}, [])
//代码在这里
变量schoolsObject=[{
“学院1”:
{
“id”:“学院1号”,
“地点”:“维多利亚”,
“姓名”:“学院一号”
},
“学院2”:
{
“id”:“学院2”,
“地点”:“塔斯马尼亚”,
“姓名”:“第二学院”
}
}];
var result=Object.keys(schoolsObject[0]).map(函数(键){
返回schoolsObject[0][key];
})
console.log(结果);
给定对象:

schoolsObject = [{
    "college_1":{
        "id":"college_1",
        "location":"Victoria",
        "name":"College One"
    },
    "college_2":{
        "id":"college_2",
        "location":"Tasmania",
        "name":"College Two"
    }
}];
解决方案:

Object.values(schoolsObject[0]);
结果:

[{
    "id":"college_1",
    "location":"Victoria",
    "name":"College One"
},{
    "id":"college_2",
    "location":"Tasmania",
    "name":"College Two"
}]

尝试此操作时,我得到了未捕获的类型错误:schoolsObject.map不是函数。@timdaf:如果你的
schoolsObject
真的如问题所示,那么
schoolsObject.map
不是函数的唯一原因就是如果你使用的是过时的JavaScript引擎。任何模糊现代的东西(IE9+)在数组上有
map
,你问题中的
schoolsObject
是一个数组。抱歉,我想我可能误解了我的对象。我遵循了下面的ES6示例,但从schoolsObject中删除了[0]:
schoolsObject=object.keys(schoolsObject[0]).map(key=>schoolsObject[0][key])
这正是我所希望的。好的,我也从投票结果中删除了[0],效果很好。我不确定为什么。map不适用于“step1”上面的第二个解决方案,但在使用上面的第一个解决方案或下面的其他ES2015解决方案时效果很好。谢谢大家的帮助。我正在尝试您的解决方案,顺便说一句,谢谢您。我认为第二次返回(下一行)后可能有一个小语法错误,我认为它应该有两个括号。像这样->返回项[key]; })); 当我将JS放入代码时,这是唯一能让它工作的方法。
[{
    "id":"college_1",
    "location":"Victoria",
    "name":"College One"
},{
    "id":"college_2",
    "location":"Tasmania",
    "name":"College Two"
}]