Javascript 循环遍历对象并查找指定的属性

Javascript 循环遍历对象并查找指定的属性,javascript,angular,Javascript,Angular,我有一个对象数组。典型的对象如下所示: { id: x name: y employeeInfo: { employeeNumber: x startDate: x } salary: x } 现在我正试着循环查看它,并获取名称、员工编号和薪水 要在循环中使用的我的列变量是: public columns: Array<any> = [ {title: 'id', name: 'id'}, {title: 'employeeInfo.em

我有一个对象数组。典型的对象如下所示:

{
  id: x
  name: y
  employeeInfo: {
    employeeNumber: x
    startDate: x
  }
  salary: x
}
现在我正试着循环查看它,并获取名称、员工编号和薪水

要在循环中使用的我的列变量是:

public columns: Array<any> = [
  {title: 'id', name: 'id'},
  {title: 'employeeInfo.employeeNumber', name: 'employeeInfo.employeeNumber'},
  {title: 'salary', name: 'salary'}]
但这当然会导致条目['emplyeinfo.employeeNumber',这将导致未定义的


有人能帮忙吗?

您可以拆分列名并减少,如:

column.name.split('.').reduce((res, part) => res[part], item)
返回一个数组(在我们的例子中是
['employeeInfo','employeeNumber']
),这样我们就可以使用
项作为
初始值来创建该数组

reduce()
方法对累加器和每个累加器应用函数 数组中的元素(从左到右),以将其缩减为单个 价值观


您可以拆分列名并减少,如:

column.name.split('.').reduce((res, part) => res[part], item)
返回一个数组(在我们的例子中是
['employeeInfo','employeeNumber']
),这样我们就可以使用
项作为
初始值来创建该数组

reduce()
方法对累加器和每个累加器应用函数 数组中的元素(从左到右),以将其缩减为单个 价值观


难道你不能在点上解析/拆分名称,对于每个部分,你得到对象,获取其属性,并在有下一个属性要获取时重复吗?

难道你不能在点上解析/拆分名称,对于每个部分,你得到对象,获取其属性并在有下一个属性要获取时重复?

类似以下内容:

var员工=[
{
id:1,
姓名:'查理',
员工信息:{
雇员编号:123,
起始日期:2017-01-23
},
工资:2500
},
{
id:2,
姓名:'约翰',
员工信息:{
雇员编号:456,
起始日期:2017-02-26
},
薪金:3500
}
];
变量列=[
{title:'id',name:'id'},
{标题:'employeeInfo.employeeNumber',名称:'employeeInfo.employeeNumber'},
{标题:“薪水”,名称:“薪水”}
];
函数buildTable(){
变量表=$(“”);
变量头=$(“”);
对于(var i=0;i

类似这样的内容:

var员工=[
{
id:1,
姓名:'查理',
员工信息:{
雇员编号:123,
起始日期:2017-01-23
},
工资:2500
},
{
id:2,
姓名:'约翰',
员工信息:{
雇员编号:456,
起始日期:2017-02-26
},
薪金:3500
}
];
变量列=[
{title:'id',name:'id'},
{标题:'employeeInfo.employeeNumber',名称:'employeeInfo.employeeNumber'},
{标题:“薪水”,名称:“薪水”}
];
函数buildTable(){
变量表=$(“”);
变量头=$(“”);
对于(var i=0;i

我最终采用了“简化”的方法。i、 e.筛选数组,获取所需内容,将其放入新对象,放入临时数组,最后用简单数组替换复杂数组。

我最终使用了“简化”方法。i、 e.筛选数组,获取所需内容,将其放入新对象,放入临时数组,最后用简单数组替换复杂数组。

尝试以下操作:

var myObject = {
  id: "x",
  name: "y",
  employeeInfo: {
    employeeNumber: "inner employeeNumber",
    startDate: "inner date",
  },
  salary: "x"
}

for(var id in myObject) {
   if(typeof myObject[id] === "object") {
      for(var innerId in myObject[id]){
         console.log(innerId + ": " + myObject[id][innerId]);
      }
   } else {
    console.log(id + " " + myObject[id]);
   }
}
试试这个:

var myObject = {
  id: "x",
  name: "y",
  employeeInfo: {
    employeeNumber: "inner employeeNumber",
    startDate: "inner date",
  },
  salary: "x"
}

for(var id in myObject) {
   if(typeof myObject[id] === "object") {
      for(var innerId in myObject[id]){
         console.log(innerId + ": " + myObject[id][innerId]);
      }
   } else {
    console.log(id + " " + myObject[id]);
   }
}

您希望从中获得什么输出?HTML模板的输出需要在一个表中,以id、employeeNumber和salary为列(按该顺序)。您希望从中获得什么输出?HTML模板的输出需要在一个表中,以id、employeeNumber和salary为列(按该顺序)嗯,我不熟悉这种方法,你能再解释一下吗?嗯,我不熟悉这种方法,你能再解释一下吗?