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

在完成 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、'-' 和 '.'。


收到一只叮咚
浏览 125回答 3
3回答

catspeake

你可以这样做: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){&nbsp; let len = arr.length;&nbsp; if(len==0) return '';&nbsp; return arr.slice(0, len-1).map(p=>p.name).join(", ") + (len>1 ? ' & ' : '') + arr[len-1].name;}

九州编程

您的版本不会产生预期的结果。function list(names){&nbsp;if (names.length > 1) {&nbsp; &nbsp;return `${otherNames(names)} & ${names[names.length - 1].name}`&nbsp;} else if (names.length === 1) {&nbsp; &nbsp;return names[0].name&nbsp;}&nbsp; return '';}function otherNames(array) {&nbsp; return array.splice(0, array.length - 1).map(person => person.name).join(', ');}应该这样做。

白猪掌柜的

对于这类事情,将任务分解为单独的功能,然后根据需要将它们组合起来可能很有用。这里函数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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript