链接JS方法

Jez*_*mas 2 javascript jquery

如果字符串符合某种格式,我正在尝试在字符串中插入一些空格.具体来说,如果字符串仅由数字组成,并且长度恰好为五个字符,则应在第三个和第四个数字之间添加空格.

这是我的测试用例:

function codeAddress() {
    var num_regex = /^\d+$/,
            input = $("#distributor-search").val(),
          address = (input.match(num_regex) && input.length == 5) ? input.split('').splice(3, 0 , ' ').join() : input ;

    console.log('The address is: ' + address);

    return false;
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,链接.split(),.splice().join()似乎不返回任何东西.我哪里错了?

Tim*_* S. 6

split()返回一个数组,splice()返回带有已删除元素的数组,并join()返回连接数组.

看起来一切都出错了splice().您可以获取已删除的项目,而不是给予余数.

我的测试:

var input = '123,789';
var output = input.split(',').splice(1, 0, '456').join(',');

console.log(output); // outputs nothing, because `splice(1, 0, '456')` doesn't remove any values
Run Code Online (Sandbox Code Playgroud)

您可以通过制作使用splice功能的原型来解决这个问题,如下所示:

Array.prototype.isplice = function() {
    var tmp = this;

    Array.prototype.splice.apply(tmp, Array.prototype.isplice.arguments);

    return tmp;
};

var output = input.split(',').isplice(1, 0, '456').join(',');
console.log(output); // outputs ["123", "456", "789"] as expected
Run Code Online (Sandbox Code Playgroud)