简体   繁体   English

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

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

I was not able to output the list of names like Bart, Lisa & Maggie but had a list of [object: object], [object, object] & [object, object] instead.我无法输出像Bart、Lisa 和 Maggie这样的名字列表,而是有一个[object: object]、[object, object] 和 [object, object] 的列表

Here is the code:这是代码:

 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));

Assuming that your names array looks like this :假设您的names数组如下所示:

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

I think you can do something like that :我认为你可以做这样的事情:

 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"

(Edit) Or here is another way to do it, by keeping your initial code : (编辑)或者这是另一种方法,通过保留您的初始代码:

 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