目前正面临这一挑战。
// stringLengths takes in four strings
// it returns an array containing the length of each string
// Example: stringLengths('mushroom', 'onion', '', 'garlic') returns [8, 5, 0, 6]
function stringLengths(str1, str2, str3, str4) {
}
肯定有
function stringLengths(str1, str2, str3, str4) {
var arr = [];
for (var i = 1; i < arguments.length; i++) {
arr.push(arguments[i].length);
}
return arr;
}
这给我一个空数组。
如何将每个参数的length属性推入Array
并返回每个参数长度的数组?
答案 0 :(得分:6)
您可以使用ES6功能的...
和Array.map
。所以你将处理任意数量的字符串。
function stringLengths(...args) {
return args.map(x => x.length);
}
console.log(stringLengths(
'str1',
'je suis un chocolat',
'les croissants sont bons',
));
更简洁
const stringLengths = (...args) => args.map(x => x.length);
console.log(stringLengths(
'str1',
'je suis un chocolat',
'les croissants sont bons',
));
答案 1 :(得分:4)
如果您只想要一个长度数组:
function stringLengths(str1, str2, str3, str4) {
return Array.from(arguments).map((x) => x.length);
}
应该做的伎俩
答案 2 :(得分:3)
您的代码工作正常,但您从1
开始而不是索引0
。
数组有一个基于零的索引,因此当你只传递一个参数时,你得到的是初始的空数组,因为循环根本没有被执行。
function stringLengths(str1, str2, str3, str4) {
var arr = [];
for (var i = 0; i < arguments.length; i++) {
arr.push(arguments[i].length);
}
return arr;
}
var x = stringLengths('123', '123456789', '12345');
console.log(x);
有关访问数组元素here
的更多详细信息答案 3 :(得分:2)
您的代码运行正常。如果你想要所有的参数长度,你只需要用i = 0而不是1开始你的循环。
function stringLengths(str1, str2, str3, str4) {
var arr = [];
for (var i = 0; i < arguments.length; i++) {
arr.push(arguments[i].length);
}
return arr;
}
console.log(stringLengths("hello", "okay", "doh"));
&#13;
答案 4 :(得分:0)
使用隐式对象arguments
,您可以获取密钥,如果传递的对象没有该attr,则检查attr length
。
const stringLengths = function() {
return Object.keys(arguments).map(k => arguments[k].length || 0);
}
console.log(stringLengths('ele', 'from', 'stackoverflow', 2222));