为了账号安全,请及时绑定邮箱和手机立即绑定

格式化一串名称,例如“Bart、Lisa & Maggie”

格式化一串名称,例如“Bart、Lisa & Maggie”

收到一只叮咚 2022-12-29 10:38:20
在完成 freecodecamp javascript 之后,我想我尝试了 codewars javascript 基础知识。第一次失败。我知道那里的解决方案,但我想让你看看我的想法是什么。亲切的问候function list(names){  //your code here  if (names.length >=1) {        let entry = names.shift();    console.log(entry.name+", ")  }  if(names.length <=1){    console.log(" &"+names.name)  }}给定:一个包含名称散列的数组返回:一个字符串,格式为由逗号分隔的名称列表,最后两个名称除外,这两个名称应由&符号分隔。例子:list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ])// returns 'Bart, Lisa & Maggie'list([ {name: 'Bart'}, {name: 'Lisa'} ])// returns 'Bart & Lisa'list([ {name: 'Bart'} ])// returns 'Bart'list([])// returns ''注意:所有哈希值都经过预先验证,并且只包含 AZ、az、'-' 和 '.'。
查看完整描述

3 回答

?
catspeake

TA贡献1111条经验 获得超0个赞

你可以这样做:


console.log( list([ {name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'} ]) )


console.log( list([ {name: 'Bart'}, {name: 'Lisa'} ]) )


console.log( list([ {name: 'Bart'} ]) )


console.log( list([]) )


function list(arr){

  let len = arr.length;

  if(len==0) return '';

  return arr.slice(0, len-1).map(p=>p.name).join(", ") + (len>1 ? ' & ' : '') + arr[len-1].name;

}


查看完整回答
反对 回复 2022-12-29
?
九州编程

TA贡献1785条经验 获得超4个赞

您的版本不会产生预期的结果。


function list(names){

 if (names.length > 1) {

   return `${otherNames(names)} & ${names[names.length - 1].name}`

 } else if (names.length === 1) {

   return names[0].name

 }

  return '';

}


function otherNames(array) {

  return array.splice(0, array.length - 1).map(person => person.name).join(', ');

}

应该这样做。


查看完整回答
反对 回复 2022-12-29
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

对于这类事情,将任务分解为单独的功能,然后根据需要将它们组合起来可能很有用。这里函数prop用于获取属性name,函数list用于从名称数组生成字符串。两者结合在 中listByName,map用于从输入数组中的每个对象中获取名称。


const list = arr => arr.slice(0,-1).join(", ") + (arr.length>1 ? " & " : "") + arr.slice(-1);

const prop = propName => x => x[propName];

const listByName = arr => list(arr.map(prop('name')))


console.log(listByName([{ name: "Bart" }, { name: "Lisa" }, { name: "Maggie" }]));

console.log(listByName([{ name: "Bart" }, { name: "Lisa" }]));

console.log(listByName([{ name: "Bart" }]));

console.log(listByName([]));

根据用例,您可能希望为使用无效输入的情况添加错误检查代码:例如,没有 name 属性的对象,或数组中的非对象,或输入 taht 不是传递给 的数组listByName



查看完整回答
反对 回复 2022-12-29
  • 3 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信