Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何';减去';从一根线到另一根线?_Javascript_Language Agnostic - Fatal编程技术网

Javascript 如何';减去';从一根线到另一根线?

Javascript 如何';减去';从一根线到另一根线?,javascript,language-agnostic,Javascript,Language Agnostic,假设我有以下两个字符串: var value = "1-000-111"; var mask = " - -"; 我想从值中减去掩码。换句话说,我想要这样的东西: var output = subtract(value, mask); // output should be 1000111 实现subtract()的最佳方法是什么?我写过这篇文章,但在我看来并不优雅 function subtract(value, mask) { while (mask.indexOf('-')

假设我有以下两个字符串:

var value = "1-000-111";
var mask = " -   -";
我想从
中减去
掩码
。换句话说,我想要这样的东西:

var output = subtract(value, mask);
// output should be 1000111
实现
subtract()
的最佳方法是什么?我写过这篇文章,但在我看来并不优雅

function subtract(value, mask) {
    while (mask.indexOf('-') >= 0) {
        var idx = mask.indexOf('-');
        value = value.substr(0, idx) + value.substr(idx + 1);
        mask = mask.substr(0, idx) + mask.substr(idx + 1);
    }
    return value;
}
JavaScript是否有内置的功能来实现这一点?注意,屏蔽字符不限于
-
(破折号),还可以是其他字符,如
+
。但是在给定的情况下,屏蔽字符只能是
-
+
,因此可以发送到
subtract()
函数,这使得处理不同的屏蔽字符变得很简单。此外,屏蔽字符将位于任意位置


也欢迎任何与语言无关的答案。

您可以拆分值字符串并过滤与掩码字符串相同位置的字符不相等的字符

然后加入数组以获得新字符串

函数减法(值,掩码){
返回值.split(“”).filter(函数(a,i){
返回一个!==掩码[i];
}).加入(“”);
}
控制台日志(减去(“1-000-111”和“-”);

日志(减去“foo1-000-111”,“foo-”)只需遍历值并检查
掩码中的对应值是否不是
-

var值='1-000-111';
变量掩码='-';
var结果=“”;
对于(变量i=0;i控制台日志(结果)如果您遍历值的每个字符并与掩码中的相同位置进行比较,则掩码可以是任何字符:

在split()值上使用数组#reduce()的示例

var value=“1-000-111”;
var mask=“-”;
var unmasked=value.split(“”).reduce((a,c,i)=>(mask[i]==c)?a:a+c);

console.log(无掩码)
掩码是否可以使用其他字符作为连字符来消除?您的解决方案假定所有掩码都将使用
-
是这样吗?否,掩码也可以包含其他字符。此外,屏蔽字符可能位于任意位置。要删除的字符的位置是否重要?要删除的字符数是否不同?我假设
value.replace(/-/g')不符合您的要求?