Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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 如何删除';abc&x27;一串?_Javascript_String - Fatal编程技术网

Javascript 如何删除';abc&x27;一串?

Javascript 如何删除';abc&x27;一串?,javascript,string,Javascript,String,给定字符串“abc-acb-bac-bca-abc-cab-cab-cba-acb-abc-cab-bca-bca-bac-cba-cab-bca-abc”,如何删除除abc和acb中的一个之外的所有多个匹配项 var str='abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc remove('abc-acb-bac-bca-abc-cab-cab-cba-acb-abc-cab-bca-bca-bac-cba

给定字符串“abc-acb-bac-bca-abc-cab-cab-cba-acb-abc-cab-bca-bca-bac-cba-cab-bca-abc”,如何删除除
abc
acb
中的一个之外的所有多个匹配项

var str='abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc

remove('abc-acb-bac-bca-abc-cab-cab-cba-acb-abc-cab-bca-bca-bac-cba-cab-bca-abc') 
//=> 'abc-acb-bac-bca-cab-cba'

我看到了,但它只处理重复的字母,我想针对特定的子字符串。

拆分破折号上的字符串,创建一个由每个条目设置关键帧的映射,从映射中获取所有关键帧的数组并将它们连接起来

function remove(str) {
  var map = {};
  str.split('-').forEach(
    piece => map[piece] = true
  );
  return Object.keys(map).join('-');
}

拆分破折号上的字符串,创建一个由每个条目设置关键帧的映射,从映射中获取所有关键帧的数组并将它们连接起来

function remove(str) {
  var map = {};
  str.split('-').forEach(
    piece => map[piece] = true
  );
  return Object.keys(map).join('-');
}
我建议使用--组合,使用普通JavaScript对象存储到目前为止遇到的一组子字符串(
'abc'
'bac'
,等等),并在发现重复时从过滤器返回
false
,以便从结果中忽略它们

这还具有相对于字符串长度的线性(O(n))时间运行的额外好处,而大多数使用
indexOf
的解决方案运行的复杂度要低得多,即O(n2)

函数删除(字符串){
返回字符串.split('-').filter(函数(e){
return!this[e]&(this[e]=true)
},{}.join('-'))
}
console.log(remove('abc-acb-bac-bca-abc-cab-cba-acb-abc-cab-bca-bca-bca-bac-cba-cab-bca-abc')
我建议使用一个--组合,使用一个普通的JavaScript对象来存储到目前为止遇到的一组子字符串(
'abc'
'bac'
,等等),当发现重复时,从过滤器返回
false
,以便从结果中忽略它们

这还具有相对于字符串长度的线性(O(n))时间运行的额外好处,而大多数使用
indexOf
的解决方案运行的复杂度要低得多,即O(n2)

函数删除(字符串){
返回字符串.split('-').filter(函数(e){
return!this[e]&(this[e]=true)
},{}.join('-'))
}

console.log(删除('abc-acb-bac-bca-abc-cab-cab-cba-acb-abc-cab-bca-bca-bca-bca-bca'))
我们可以
将字符串拆分成一个数组,分隔符为
-
字符,然后在数组中查找唯一的元素。然后简单地
将数组连接回字符串中,分隔符为
-

//用于获取唯一元素的函数
Array.prototype.getUnique=函数(){
var n=[];
for(var i=0;iconsole.log(arrUniq.join('-')
我们可以
将字符串拆分成一个数组,分隔符为
-
字符,然后在数组中找到唯一的元素。然后简单地
将数组连接回字符串中,分隔符为
-

//用于获取唯一元素的函数
Array.prototype.getUnique=函数(){
var n=[];
for(var i=0;i
使用
split('-')
删除所有连字符,使用
filter()
indexOf()
方法返回每个元素中的一个(所有元素都像ES6集合一样唯一)

仅仅提到ES6集合就让我想起了一种从数组中提取唯一值的更简单方法。请参阅代码片段2

片段1

const str=`abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc`;
//在每个连字符上使用拆分
常量arr=str.split('-');
//将arr传递到函数。。。
功能阵列(arr){
//用…的结果过滤arr。。。
返回arr.filter(函数(ele、idx、arr){
/*…当前对象的索引
||对于每个迭代,只返回
||如果它与当前索引匹配
*/
返回arr.indexOf(ele)==idx;
});
}
常数res=arrayUnique(arr);
控制台日志(res)
使用
split('-')
删除所有连字符,使用
filter()
indexOf()
方法返回每个元素中的一个(所有元素都像ES6集合一样唯一)

仅仅提到ES6集合就让我想起了一种从数组中提取唯一值的更简单方法。请参阅代码片段2

片段1

const str=`abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc`;
//在每个连字符上使用拆分
常量arr=str.split('-');
//将arr传递到函数。。。
功能阵列(arr){
//用…的结果过滤arr。。。
返回arr.filter(函数(ele、idx、arr){
/*…当前对象的索引
||对于每个迭代,只返回
||如果它与当前索引匹配
*/
返回arr.indexOf(ele)==idx;
});
}
常数res=arrayUnique(arr);

控制台日志(res)纯javascript

var str='abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc;
str=str.split('-');
uniqueArray=str.filter(函数(项目、位置){
返回str.indexOf(item)==pos;
})
str=uniqueArray.join('-');

console.log(str)纯javascript

var str='abc acb bac bca abc cab cba acb abc cab bca bca bac cba cab bca abc;
str=str.split('-');
uniqueArray=str.filter(函数(项目、位置){
返回str.indexOf(item)==pos;
})
str=uniqueArray.join('-');

console.log(str)
Regex
解决了您的问题:

/(\b\w+\b)-(?=.*\1)/g
使用类似于:

f