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



我无法输出像Bart、Lisa&Maggie,但有一个[对象:对象]、[对象,对象]&[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"

最新更新