看看下面的代码,这是非常明显的。如何修改'replaceAt'功能以获得所需的结果?
String.prototype.replaceAt = function (at) {
return this.substring(0, at) + this.substring(at+1, this.length);
}
var str = "webmaster";
var x = str.replaceAt(2);
console.log(x); // should return "b"
console.log(str); // should return "wemaster"
答案 0 :(得分:4)
你不能,字符串是不可变的。
另一种方法是返回包含替换字符和新字符串的对象或数组。然后将值分配给变量' x'和' str'分别:
String.prototype.replaceAt = function (at) {
return {
x: this.substring(at+1, at),
str: this.substring(0, at) + this.substring(at+1, this.length)
}
};
var str = "webmaster";
var result = str.replaceAt(2);
var x = result.x;
str = result.str;
console.log(x);
console.log(str);
然而,利用ES6功能' destructuring',你实际上可以把它归结为oneliner:
String.prototype.replaceAt = function (at) {
return [
this.substring(at+1, at),
this.substring(0, at) + this.substring(at+1, this.length)
]
};
var str = "webmaster";
[x, str] = str.replaceAt(2);
console.log(x);
console.log(str);