SOURCE

//自己解法
function list(names){
  console.log(names)
  let rea = names.length

  if(rea > 2){
    let res = ''
    
    for(let i=0; i < rea -1; i++){
      res += i==0 ? `${names[i].name}` : `, ${names[i].name}`
      console.log(res)
    }
    res += ` & ${names[rea-1].name}`
     console.log(res,'111')
     return res
  }

  if(rea == 0){
    return ""
  }
  if(rea == 1){
    return names[0].name
  }
  
  if(rea == 2){
    return `${names[0].name} & ${names[1].name}`
  }


}

//大佬解法
function list(names){
  return names
           .map((item) => item.name)
           .join(', ')
           .replace(/,\s([^,]+)$/, ' & $1');
}


Test.assertEquals(list([{name: 'Bart'},{name: 'Lisa'},{name: 'Maggie'},{name: 'Homer'},{name: 'Marge'}]), 'Bart, Lisa, Maggie, Homer & Marge',
"Must work with many names")
Test.assertEquals(list([{name: 'Bart'},{name: 'Lisa'},{name: 'Maggie'}]), 'Bart, Lisa & Maggie',
"Must work with many names")
Test.assertEquals(list([{name: 'Bart'},{name: 'Lisa'}]), 'Bart & Lisa', 
"Must work with two names")
Test.assertEquals(list([{name: 'Bart'}]), 'Bart', "Wrong output for a single name")
Test.assertEquals(list([]), '', "Must work with no names")
console 命令行工具 X clear

                    
>
console