我想创建一个JS函数,该函数添加一个以数组中每个成员结尾的字符串。预期的函数在调用时应返回如下内容:
addEnding(["clever", "meek", "hurried", "nice"], "ly")
预期输出:
["cleverly", "meekly", "hurriedly", "nicely"]
感谢所有建议使用map
方法的答案,但我想使用for
循环,这是我的代码:
const addEnding = (arr, str) => {
let result = '';
for (i = 0; i < arr.length; i++) {
result = arr[i]
result += str
}
return result
}
console.log(addEnding(["new", "pander", "scoop"], "er"))
问题是,当我希望它返回数组+ str结尾的所有元素时,它仅返回数组的第一个元素
答案 0 :(得分:1)
使用map函数,该函数将遍历您的数组并返回每个数组的修改版本的新数组。
使用字符串插值,您可以轻松地添加后缀
With CreateObject("Scripting.FileSystemObject")
With .CreateTextFile(Location, , True)
For i = 2 To lastrow
For j = 1 To LastCol
If j = LastCol Then
TextLine = TextLine & Cells(i, j).Text
Else
TextLine = TextLine & Cells(i, j).Text & Deliminator
End If
Next j
.WriteLine TextLine
TextLine = ""
Next i
.Close
End With
End With
答案 1 :(得分:1)
尝试以下代码
function addEnding(array, suffix) {
if (Array.isArray(array)) {
for (var i = 0; i < array.length; i++) {
array[i] = array[i] + suffix;
}
}
return array;
}
console.log(addEnding(["clever", "meek", "hurried", "nice"], "ly"));
答案 2 :(得分:1)
function addSuffix(arr, suff){
var newArr=[];
for (var i = 0; i < arr.length; i++)
newArr.push(arr[i] + suff);
return newArr;
}
答案 3 :(得分:1)
您可以将Array#map与String#concat一起使用
function addEnding(words, suffix) {
return words.map(word => word.concat(suffix))
}
const output = addEnding(["clever", "meek", "hurried", "nice"], "ly");
console.log(output);
答案 4 :(得分:1)
如果您希望使用for循环并希望以一种功能性的方式(选择的方式)进行操作,则可以尝试这样。
我已经在 Node REPL 上执行了语句。
注意»使用map()方法将返回一个新数组,它不会修改现有数组。如果要更新现有数组,最好使用for / forEach循环。
您的错误:您遇到的小错误是»您使用了 result 变量并对其进行了更新。使用
arr[i] = arr[i] + str
。
> const addEnding = (arr, str) => {
... arr.forEach((item, i) => {
..... arr[i] = item + str;
..... })
... return arr
... }
undefined
>
> addEnding(["clever", "meek", "hurried", "nice"], "ly")
[ 'cleverly', 'meekly', 'hurriedly', 'nicely' ]
>
> addEnding(["new", "pander", "scoop"], "er")
[ 'newer', 'panderer', 'scooper' ]
>
答案 5 :(得分:1)
您将结果声明为字符串,并在迭代过程中将其替换。只需按预期将数据类型更改为array
。
const addEnding = (arr, str) => {
let result = '' // You initiated a string as a result not an array
for(i=0; i<arr.length; i++) {
result = arr[i] // The string got replaced every time it interate
result += str
}
return result // The result is always the last item
}
console.log(addEnding(["new", "pander", "scoop"], "er"))
const arr =["new", "pander", "scoop"]
const str = 'er'
const addEnding = (arr, str) => {
let result = []; // Init an array as format output
for(i=0; i<arr.length; i++) {
result[i] = arr[i] + str // assign like this
}
return result
}
console.log(addEnding(arr, str))
答案 6 :(得分:1)
const addEnding = (arr, str) => {
let result = []
for(i = 0; i < arr.length; i++){
result[i] = arr[i] + str
}
return result
}
答案 7 :(得分:0)
使用map
,它将返回通过合并原始数组和后缀中的单词形成的新单词数组
function addEnding(array, suffix) {
// assuring input is array otherwise map will not work
if (Array.isArray(array)) {
return array.map(item => item + suffix)
}
}
console.log(addEnding(["clever", "meek", "hurried", "nice"], "ly"))
答案 8 :(得分:0)
const addEnding = (array, suffix) => array.map(word => `${word}${suffix}`);
const result = addEnding(["clever", "meek", "hurried", "nice"], "ly");
console.log(result);
答案 9 :(得分:0)
如果要使用传统的for循环,可以使用以下功能来实现。
function addEnding(arr, end) {
for(let i=0; i<= arr.length-1; i++)
arr[i] += end;
return arr;
}