为什么obj变量赋值两次?(对象数组,javascript)

为什么obj变量赋值两次?(对象数组,javascript),javascript,arrays,object,Javascript,Arrays,Object,我想在提到名称后打印一个对象。但为什么它会变成两次,并且两个对象都打印出来呢 这是输出: 1. Christ Evans { firstName: 'Christ', lastName: 'Evans', gender: 'Male', age: 38 } { firstName: 'Robert', lastName: 'Downey', gender: 'Male', age: 'Invalid Birth Year' } 2. Robert Downey { firstNa

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

这是输出:

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']]);
功能更改时间(arr){
让person=[];
对于(i=0;i求解:

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([]); // ""
功能更改时间(arr){
//您只能在这里编写代码!
如果(arr.length==0){
console.log(“”)
}否则{
让person=[];
让person1=[];

for(i=0;i您正在通过内部for循环传入的数组上循环。此数组包含两个数组。因此,您将创建两个对象并记录这两个对象。您的内部循环对数组中的每个元素运行一次(作为persons.length=arr.length)变量
i
j
应该声明。我明白了……那么你的想法是什么,尼克?我应该添加break;还是什么?