我正在练习,我不能使用任何类型的Array.prototype.reverse或Array.prototype.join。我必须分别反转数组中的每个字符串,并将它们打印在单独的行上。
这是我尝试过的:
// Create a function that reverses elements of a string
let reversedStuff = function (str) {
let newReversed = "";
for (let i = str.length - 1; i >= 0; i--) {
newReversed += str[i];
}
return newReversed;
};
// Use the previous function to apply the reverse on each string of an array
const args = process.argv.slice(2);
let allArr = [];
let eachWord = function (args) {
for (let y = 0; y <= args.length; y++) {
return functionReverse(args)
}
};
console.log(eachWord(args));
问题出在我的第一个功能上。我无法悄悄地找到一种在数组的每个字符串上应用反向函数的方法,它仅适用于第一个字符串。关于如何解决此问题的任何提示?
非常感谢!
您的意思是在代码中使用reverseStuff(args[y])
而不是return functionReverse(args)
吗?因为,第一个将为每个字符串调用反向函数。第二个错误可能是错误的,因为您的代码中没有名为functionReverse的函数。即使它存在,您正在做的是每次在整个数组args的长度范围内用整个字符串数组调用该函数。缺少args[y]
是主要问题。在这里,您正在访问数组args的yth索引处的值,这是您想要执行的操作。另外,正如@ASDFGerte指出的那样,<=
应该为<
,因为第一个将返回undefined
。
还请注意,通过上述更改,该函数将遍历数组,但由于它不返回任何内容,因此console.log(eachword(args))
行将打印为未定义。在这种情况下,您可以执行以下操作:
// inside the for loop in eachWord
console.log(reverseStuff(args[y]);
或者,更好的解决方案如下:
const args = process.argv.slice(2);
let allArr = [];
let eachWord = function (args, cb) {
for (let y = 0; y < args.length; y++) {
cb(reverseStuff(args[y]));
}
};
let cb = function(reveredString) {
// do what you want here
// for example
allArr.push(reveredString);
// or just simply print
console.log(reversedString);
};
eachWord(args, cb);
希望这会有所帮助!
第二个功能有一些问题:
您正在将整个数组而不是元素传递给functionReverse
。改为传递元素args[y]
,如下所示:functionReverse(args[y])
。另外,您可能想调用reversedStuff
而不是functionReverse
。
循环条件应为y < args.length
,因为数组是零索引的。
return语句在第一次迭代后结束for循环,因为return退出了该函数。相反,您应该在函数内定义数组,然后在末尾返回该数组:
let eachWord = function (args) {
let allArr = [];
for (let y = 0; y <= args.length; y++) {
allArr.push(reversedStuff(args[y]));
}
return allArr;
};
console.log(eachWord(args));
更好/更惯用的解决方案是使用Array.prototype.map
而不是循环:
Array.prototype.map
let eachWord = function (args) {
return args.map(reversedStuff);
};
console.log(eachWord(args));
返回一个新数组,其中每个元素都是将给定函数应用于源数组中每个元素的结果。