如何在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
}

规则。

  • 如果某人有名字和全名(两者都有(,则必须组合

我想得到这样的值让result=[["Joe",42]["Mary Jenkins",36],["Kim",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);

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

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},
]

最新更新