【发布时间】:2017-12-30 12:26:51
【问题描述】:
我有两个字符串,第二个字符串是从包含NaN 对象的数组转换而来的。我尝试使用replace() 方法将每个NaN 替换为第一个字符串中的一个字符。尽管在一个单独的函数中循环遍历一个字符串很顺利,但当我将它作为第二个参数插入replace() 方法时,它只给了我第一个字符串的第一个字符。我应该改变什么?
这是单独的函数,它可以工作:
function proceed(str){
var newStr ='';
for (i = 0; i < str.length; i++) {
console.log(newStr += str[i]);
}
return newStr;
}
proceed('ab2c');
/* Output: */
// a
// ab
// ab2
// ab2c
但是,当我将它插入replace() 方法时,我得到了不正确的结果(存储在变量result 中):
let ReverseMe = function (parameter) {
let extractedString = parameter.replace(/[^a-z]/gi, "");
let extractedStringArray = extractedString.split("");
extractedStringArray.reverse();
let joinedExtracted= extractedStringArray.join();
let newArray = parameter.split("");
let mixedArray = newArray.map(Number);
let joinedMixed = mixedArray.join();
let result = joinedMixed.replace(/NaN/g,
joinedExtracted.charAt(function (str) {
var newStr ='';
for (i = 0; i < str.length; i++) {
newStr += str[i];
}
}));
console.info(result);
}
ReverseMe('ab2c');
// Output: c,c,2,c
// Expected: cb2a
【问题讨论】:
-
从
ab2c获取cb2a的逻辑是什么。 -
这只是我应用到提取的字母数组 (extractedStringArray) 并转换回应用了 join() 方法的字符串的 reverse() 方法。结果存储在一个新的反向字符串joinedExtracted中,进入循环时为'cba'。
标签: javascript string loops replace