我怎样才能在 javascript 中获得全名和年龄?

how can i get full name and age in javascript?

你好,目前我javascript一个人在学习,我有一个问题!

问题

let arr = [
  [
    ['firstName', 'Joe'],
    ['age', 42],
    ['gender', 'male'],
  ],
  [
    ['firstName', 'Mary'],
    ['lastName', 'Jenkins'],
    ['age', 36],
    ['gender', 'female'],
  ],
  [
    ['lastName', 'Kim'],
    ['age', 40],
    ['gender', 'female'],
  ],
];

这是我写的

function test5(arr) {
 let result =[]
  arr.map(function(ele){
    for(let i=0; i < ele.length; i++){
       if(ele[i][0]==='firstName'||ele[i][0]==='lastName'){
         result.push(ele[i][1])
       }
       if(ele[i][0]==='age'){
         result.push(ele[i][1])
       }
    }
  })
  return result
}

规则。

我想得到这样的价值 let result = [ [“Joe”, 42] [“Mary Jenkins”, 36] , [“Kim”, 40] ]

我认为你的数据结构不正确。我假设您有一组类似这样的对象。

let arr = [
  {
    'firstName': 'Joe',
    'age': 42,
    'gender': 'male',
  },
  {
    'firstName': 'Mary',
    'lastName': 'Jenkins',
    'age': 36,
    'gender': 'female',
  },
  {
    'firstName': 'Kim',
    'age': 40,
    'gender': 'female',
  }
];

那么你的测试函数将如下所示-

function test5(arr) {
 let result=[];
 arr.forEach(function(elm){
  let entry={
    'name':elm['firstName'],
    'age':elm['age']
  };

  // this if will put append last name if present in elm
  if(elm['lastName']){
    entry['name']=entry['name']+' '+elm['lastName'];
  }
  result.push(entry)
 })
 return result;
}

你会得到这个结果-

[
    {name:"Joe",age:42},
    {name:"Mary Jenkins",age:36},
    {name:"Kim",age:40},
]

您可以尝试将嵌套数组转换为对象数组并进行对象迭代

let arr = [
  [
    ["firstName", "Joe"],
    ["age", 42],
    ["gender", "male"]
  ],
  [
    ["firstName", "Mary"],
    ["lastName", "Jenkins"],
    ["age", 36],
    ["gender", "female"]
  ],
  [
    ["lastName", "Kim"],
    ["age", 40],
    ["gender", "female"]
  ]
];


const createObject = a => {
  const res = {};
  for (let el of a) {
    res[el[0]] = el[1];
  }
  return res;
};

const results = [];
arr.forEach(a => {
  if (a && a.length !== 0) {
    const destructedArray = createObject(a);

    destructedArray["name"] = "";
    if (destructedArray.firstName && destructedArray.lastName) {
      destructedArray.name = `${destructedArray.firstName}, ${destructedArray.lastName}`;
    } else if (destructedArray.lastName) {
      destructedArray.name = `${destructedArray.lastName}`;
    } else {
      destructedArray.name = `${destructedArray.firstName}`;
    }
    results.push([destructedArray.name, destructedArray.age]);
  }
});

console.log(results);