为什么 obj 变量分配了两次?(对象数组,JavaScript)



我想在提到名称后打印一个对象。但是为什么它变成两次并且两个对象都被打印出来呢?

这是输出:

1. Christ Evans
{ firstName: 'Christ', lastName: 'Evans', gender: 'Male', age: 38 }
{
firstName: 'Robert',
lastName: 'Downey',
gender: 'Male',
age: 'Invalid Birth Year'
}
2. Robert Downey
{ firstName: 'Christ', lastName: 'Evans', gender: 'Male', age: 38 }
{
firstName: 'Robert',
lastName: 'Downey',
gender: 'Male',
age: 'Invalid Birth Year'
}

我只想在提到名称后打印一次和正确的对象。

这是我的代码:

function changeMe(arr) {
let person = [];
for(i=0;i<arr.length;i++){
person.push(`${arr[i][0]} ${arr[i][1]}`)
}
for(i=0;i<person.length;i++){
var urut = i+1;
console.log(`${urut}. ${person[i]}`);
for(j=0;j<arr.length;j++){
var obj = {}  
if(arr[j].length==4 && 2020-arr[j][3]>0){
obj.firstName = arr[j][0]
obj.lastName = arr[j][1]
obj.gender = arr[j][2]
obj.age = 2020 - arr[j][3]
}else{
obj.firstName = arr[j][0]
obj.lastName = arr[j][1]
obj.gender = arr[j][2]
obj.age = 'Invalid Birth Year'
}
console.log(obj)  
}
}
}
// TEST CASES
changeMe([['Christ', 'Evans', 'Male', 1982], ['Robert', 'Downey', 'Male']]);

已解决:

function changeMe(arr) {
// you can only write your code here!
if(arr.length==0){
console.log( '""')
}else{
let person = [];
let person1 = [];
for(i=0;i<arr.length;i++){
person.push(`${i+1}. ${arr[i][0]} ${arr[i][1]}`)
}
for(j=0;j<arr.length;j++){
var subObj = {}
if(arr[j].length==4 && 2020-arr[j][3]>0){
subObj.firstName = arr[j][0]
subObj.lastName =  arr[j][1]
subObj.gender = arr[j][2]
subObj.age = 2020 - arr[j][3]
}else{
subObj.firstName = arr[j][0]
subObj.lastName = arr[j][1]
subObj.gender = arr[j][2]
subObj.age = 'Invalid Birth Year'
}
person1.push(subObj) 
}
for(i=0;i<person.length;i++){
for(j=0;j<person1.length;j++){
if(i==j){
console.log(person[i])
console.log(person1[i])
}
}
}
}
}
// TEST CASES
changeMe([['Christ', 'Evans', 'Male', 1982], ['Robert', 'Downey', 'Male']]); // 1. Christ Evans:
// { firstName: 'Christ',
//   lastName: 'Evans',
//   gender: 'Male',
//   age: 37 }
// 2. Robert Downey:
// { firstName: 'Robert',
//   lastName: 'Downey',
//   gender: 'Male',
//   age: 'Invalid Birth Year' }
changeMe([]); // ""

最新更新