如何输出字符串列表而不是 [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"
我无法输出像 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"