gpt4 book ai didi

javascript - 在JavaScript中的replace()方法中循环一个字符串

转载 作者:行者123 更新时间:2023-11-28 03:50:26 24 4
gpt4 key购买 nike

我有两个字符串,第二个字符串是从数组转换而来的,包含 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

最佳答案

更新:

根据您的评论,我更新了答案以符合您提到的标准。

function reverseMe(string) {
var chars = string.split('');
var array = chars.map(Number);
chars = chars.filter(char => isNaN(Number(char)));

return array.map(item => isNaN(item) ? chars.pop() : item).join('');
}

var theString = reverseMe("ab2c");

console.log(theString);
// → cb2a

console.log(reverseMe("1abc2zyx3w"));
// → 1wxy2zcb3a

console.log(reverseMe("a1b2c"));
// → c1b2a

旧答案:

如果到目前为止您的意图只是反转字符串,您可以非常简单地做到这一点,如下所示:

function reverseMe(string) {
var newString = '';
for (var i = string.length - 1; i >= 0 ; i--) {
console.log(newString += string[i]);
}
return newString;
}

var theString = reverseMe("ab2c");
// → c
// → c2
// → c2b
// → c2ba

console.log(theString);
// → c2ba

但是,在您的代码中,问题是 joinedExtracted.charAt(function(str)... 没有获取任何数字作为参数,因为该函数传入参数 function(str) {...} 返回未定义

因此 charAt() 隐式地认为参数为 0,因此返回第一个字母 "c",即“cc2c”;

关于javascript - 在JavaScript中的replace()方法中循环一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com