我怎样才能在 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);
你好,目前我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);