Javascript 如何检测数组是否具有年值并定义它?
以下是示例阵列:Javascript 如何检测数组是否具有年值并定义它?,javascript,arrays,node.js,Javascript,Arrays,Node.js,以下是示例阵列: [ 'test', '1994', 'test', 'test', '2018'] 我需要的是示例阵列中的两个阵列: [ 'test', 'test', 'test' ] 及 我尝试使用indexOf,但我无法通过具有所有可能年份值的数组(~1900至今/2018年) 我知道什么switch station会起作用,但是会有很多复制粘贴的代码,我相信有更好的方法 编辑: 你们中的一些人不明白我想得到的是什么年值而不仅仅是一个数字,所以用正则表达式的答案最接近我想要的,我只是
[ 'test', '1994', 'test', 'test', '2018']
我需要的是示例阵列中的两个阵列:
[ 'test', 'test', 'test' ]
及
我尝试使用indexOf
,但我无法通过具有所有可能年份值的数组(~1900至今/2018年)
我知道什么switch station
会起作用,但是会有很多复制粘贴的代码,我相信有更好的方法
编辑:
你们中的一些人不明白我想得到的是什么年值而不仅仅是一个数字,所以用正则表达式的答案最接近我想要的,我只是在谷歌搜索到
^(19 | 20)\d{2}$
后替换正则表达式。因此,年份可能只有1900-2099年。您可以将阵列减少为两个单独的阵列。检查字符串是否可以铸造到1900-2018之间的数字,以及其计算结果是否为:
false
-强制转换为0,并推送到第一个子数组true
-强制转换为1,并推送到第二个子数组const arr=['test','1994','test','test','test','2018'];
常量isYear=(n)=>n>=1900&&n{
r[+isYear(+s)]。推送;
返回r;
}, [[], []]);
控制台日志(测试);
对数(年)代码>您可以使用正则表达式执行此操作:
var arr = [ 'test', '1994', 'test', 'test', '2018'];
var dates = [];
var nonDates = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].match(/^\d{4}$/))
dates.push(arr[i]);
else
nonDates.push(arr[i]);
}
var arr=[‘测试’、‘1994’、‘测试’、‘测试’、‘2018’];
var日期=[];
var非日期=[];
对于(变量i=0;i
您可以使用函数reduce
根据字符串的内容对字符串进行分组
让arr=[‘测试’、‘1994’、‘测试’、‘测试’、‘2018’],
isYear=(s)=>!isNaN(编号(s.trim()),
结果=arr.reduce((a,s)=>{
如果(年)a.年推送;
否则a.线。推;
返回a;
},{年:[],字符串:[]});
控制台日志(结果)代码>
.as console wrapper{max height:100%!important;top:0;}
您可以检查isNaN
并将值推送到文本数组的任意一个数字
var数组=['test','1994','test','test','2018'],
text=[],
数字=[];
array.forEach(s=>[numbers,text][+/^(19 | 20)\d{2}$/.test].push(s));
console.log(文本);
控制台日志(编号)代码>您也可以与检查一起使用来完成此操作
var数组=['test','1994','test','test','2018'];
var text=array.filter(e=>isNaN(e)),
years=array.filter(e=>!isNaN(e));
console.log(文本);
对数(年)
@Ele,你指的是哪一部分?它是一个属性访问器,通过使用一元加号和isNaN
的布尔值检查结果来获取数值。聪明的解决方案。我喜欢!cleaver和short,但不完全是我想要的,请阅读后期编辑。您可以使用正则表达式而不是isNaN
。谢谢,这正是我想要的。
var arr = [ 'test', '1994', 'test', 'test', '2018'];
var dates = [];
var nonDates = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].match(/^\d{4}$/))
dates.push(arr[i]);
else
nonDates.push(arr[i]);
}