繁体   English   中英

如何输出字符串列表而不是 [object : object]?

[英]How do I output a list of strings instead of [object : object]?

我无法输出像Bart、Lisa 和 Maggie这样的名字列表,而是有一个[object: object]、[object, object] 和 [object, object] 的列表

这是代码:

 let names = null; function list(names) { return names.slice(0, names.length - 2).join(', ') + ', ' + names.slice(names.length - 2, names.length + 1).join(' & '); } console.log(list(names));

假设您的names数组如下所示:

const names = [{name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}]

我认为你可以做这样的事情:

 const names = [{name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}] function list(names){ let str = ''; if (names.length !== 0) { // Get the last name and remove it from the names array let last = names.pop(); if (names.length !== 0) { // names may be empty if there was only one value in the initial names array // Then you need to transform your array from [{name: 'Bart'},...] // to ['Bart', 'Lisa', 'Maggie'] : str = names.map( (val, i, arr) => { if (i !== arr[arr.length - 1]) { return val.name; } }).join(', ') // From here, str is equal to "Bart, Lisa" // Now we add "& Maggie" to the string str += ' & ' + last.name; } } return str; } console.log(list(names)) // "Bart, Lisa & Maggie"

(编辑)或者这是另一种方法,通过保留您的初始代码:

 const names = [{name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}] function list(names){ return names.slice(0, names.length - 2).map(value => value.name).join(', ') + ', ' + names.slice(names.length - 2, names.length + 1).map(value => value.name).join(' & '); } console.log(list(names)) // "Bart, Lisa & Maggie"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM