Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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_Arrays_Regex_String_Data Manipulation - Fatal编程技术网

使用JavaScript从数组中的字符串中删除所有字母字符和前导零

使用JavaScript从数组中的字符串中删除所有字母字符和前导零,javascript,arrays,regex,string,data-manipulation,Javascript,Arrays,Regex,String,Data Manipulation,感谢您花时间阅读我的问题 我需要从数组中的字符串元素中删除所有按字母顺序排列的字符和前导零。阵列的外观如下所示: [“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”、…] 结果应为以下整数数组: [7345671238,34,36,38,39,98,…] 最后,我想从这个升序排序的数字列表中确定最小的省略值。我已经找到了一个JS函数,它通过传递一个整数数组来完成这项工作,并且它可以完美地工作 也许我们可以以

感谢您花时间阅读我的问题

我需要从数组中的字符串元素中删除所有按字母顺序排列的字符和前导零。阵列的外观如下所示:

[“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”、…]

结果应为以下整数数组:

[7345671238,34,36,38,39,98,…]

最后,我想从这个升序排序的数字列表中确定最小的省略值。我已经找到了一个JS函数,它通过传递一个整数数组来完成这项工作,并且它可以完美地工作

也许我们可以以某种方式将上述需求与下面的JS函数集成,以确定忽略的最小值

var k = [73456,71238,34,36,38,39,98];

k.sort(function(a, b) { return a-b; });   // To sort by numeric

var offset = k[0];
var lowest = -1;
for (i = 0;  i < k.length;  ++i) {
  if (k[i] != offset) {
    lowest = offset;
    break;
  }
  ++offset;
}
if (lowest == -1) {
    lowest = k[k.length - 1] + 1;
}
return lowest;
var k=[7345671238,34,36,38,39,98];
k、 排序(函数(a,b){返回a-b;});//按数字排序
var偏移量=k[0];
var最低值=-1;
对于(i=0;i
因此,简而言之,我想从字符串数组中确定最小省略值

[“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”、…]

因此,对于上述示例,JS函数的结果应返回35


非常感谢您的建议!我期待着阅读您的评论。

您可以使用这个简单的正则表达式替换:

repl = str.replace(/^[a-zA-Z]+0*/, "")

正则表达式详细信息:

  • ^
    :开始
  • [a-zA-Z]+
    :匹配字母表
  • 0*
    :匹配零个或多个
    0
    s
  • 替换只是一个空字符串

您也可以使用
匹配
,而不是删除不需要的字符

str=“FR00034”
str.match(/[1-9][0-9]*/)
正则表达式详细信息:

  • [1-9]
    :第一个字符应该是非零数字
  • [0-9]*
    :以下所有数字

获取所有函数中最低值的最后一个函数应该如下所示

函数getLowestOf(){ const Number=arr.map((项)=>Number(项匹配(/[1-9][0-9]*/)[0]); const sorted=numbers.sort((a,b)=>a-b); //控制台日志(已排序); 返回排序[0]; } 常数arr=[“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”];
console.log(getlowstof(arr))
您还可以使用单个字符类
^[a-Z0]+
来匹配字符串开头出现的一个或多个a-Z或0,然后使用数组映射

s = s.replace(/^[A-Z0]+/, "")
const a=[“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”];

console.log(a.map(s=>s.replace(/^[a-Z0]+/,“”))
用于提供的列表示例a,如。。。已经足够用于字符串复制。由于必须为每个数组项处理此任务以及的附加任务,因此需要使用

为了达到OP希望的最终结果,必须实现一个函数,该函数从无序的整数列表中获取最小的省略值

const sampleList=[“DE73456”、“DE71238”、“FR00034”、“FR00036”、“ES00038”、“US00039”、“DE00098”];
//对于上面的示例,类似于/^[0\D]+/。。。已经
//足够了。。。[https://regex101.com/r/ZSDGvC/1/]
//未排序的整数列表。。。
console.log(
样本列表
.map(sample=>Number(sample.replace(/^[0\D]+/),“”)))
);
函数getLowestOmittedValueFromIntegerList(列表){
让Lowestomitdinteger;
设hasOmittedValue=false;
常量maximumListCount=(list.length-1);
//使用浅拷贝不改变原始文件
//…并按升序对新数组进行排序。
list=Array.from(list).sort((a,b)=>(a-b));
//查找省略的值,保存并提前退出。
list.some((整数,idx)=>{
if(idxNumber(sample.replace(/^[0\D]+/),“”)))
)
);
//概念证明。。。
console.log('\n概念的起源…\n\n');
console.log(//应为未定义的值
getLowestOmittedValueFromIntegerList([9,8,7,6,6,6,5,4,3,2,1,0])
);
console.log(//7
getLowestOmittedValueFromIntegerList([9,8,6,6,6,5,4,3,2,1,0])
);
log(//expect 11
getLowestOmittedValueFromIntegerList([0,1,2,3,4,5,6,7,8,9,10,12])
);
console.log(//应为未定义的值
getLowestOmittedValueFromIntegerList([0,1,2,3,4,5,6,7,8,9,10,11,12])
);
log(//expect-1
getLowestOmittedValueFromIntegerList([-4,-3,-2,0,1,2,3,4])
);
log(//expect-2
getLowestOmittedValueFromIntegerList([-4,-3,-1,0,1,2,3,4])
);

。作为控制台包装{min height:100%!important;top:0;}
如果从字符串中删除所有字符,则该字符串将为空,这可能会有所帮助。我想你的意思是“字母字符”?你是对的@JoelFan,关于这一点,问题没有很好地陈述。我已经编辑了这个问题-谢谢你指出这一点!谢谢你,彼得。然而,我在寻找结果整数数组范围内的最小未使用数。谢谢你的帮助。@nairolf。。。对于所提供的示例,哪个是?。。你的解释不太清楚。因为这个数字是连续的,它会是36吗