如何在javascript中的许多字符串中选择数字字符串(仅包含数字的字符串),而忽略其余字符串?
如何选择数值元素以及如何忽略字母元素(在本例中为“2009-10”:“NA”、“2010-11”:“NA”)如何在javascript中的许多字符串中选择数字字符串(仅包含数字的字符串),而忽略其余字符串?,javascript,Javascript,如何选择数值元素以及如何忽略字母元素(在本例中为“2009-10”:“NA”、“2010-11”:“NA”) stateData:[{“1999-00”:“125236”, "2000-01": "140119", "2001-02": "151482", "2002-03": "163385", "2003-04": "184463", "2004-05": "202575", "2005-06": "239683", "2006-07": "277286", "2007-08": "326
stateData:[{“1999-00”:“125236”,
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“NA”}]
尝试映射
和内部,获取对象的条目,然后过滤与数字正则表达式不匹配的条目/\d+/
。大概是这样的:
var stateData=[{“1999-00”:“125236”,“2000-01”:“140119”,“2001-02”:“151482”,“2002-03”:“163385”,“2003-04”:“184463”,“2004-05”:“202575”,“2005-06”:“239683”,“2006-07”:“277286”,“2007-08”:“326547”,“2008-09”:“377346”,“2009-10”:“NA”,“2010-11”:“NA”};
var result=stateData.map(p=>Object.fromEntries(Object.entries(p).filter([k,v])=>v.match(/\d+/));
控制台日志(结果)
尝试映射
和内部,获取对象的条目,然后过滤与数字regex不匹配的条目/\d+/
。大概是这样的:
var stateData=[{“1999-00”:“125236”,“2000-01”:“140119”,“2001-02”:“151482”,“2002-03”:“163385”,“2003-04”:“184463”,“2004-05”:“202575”,“2005-06”:“239683”,“2006-07”:“277286”,“2007-08”:“326547”,“2008-09”:“377346”,“2009-10”:“NA”,“2010-11”:“NA”};
var result=stateData.map(p=>Object.fromEntries(Object.entries(p).filter([k,v])=>v.match(/\d+/));
控制台日志(结果)
您可以使用简单的正则表达式/^\d+$/
检查字符串值是否只有数字。如果值通过正则表达式,则可以选择它,如果失败,则忽略它
let result = stateData.map(value => {
const temp = {};
for(var key in value) {
if(/^\d+$/.test(value[key])
temp[key] = value[key]
}
return temp;
}
//result array will have all the values which are numbers
console.log(result);
可以使用简单的正则表达式
/^\d+$/
检查字符串值是否只有数字。如果值通过正则表达式,则可以选择它,如果失败,则忽略它
let result = stateData.map(value => {
const temp = {};
for(var key in value) {
if(/^\d+$/.test(value[key])
temp[key] = value[key]
}
return temp;
}
//result array will have all the values which are numbers
console.log(result);
您可以这样做(使用
/^\d+$/
测试它是否都是数字):
const stateData=[{
"1999-00": "125236",
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“NA3”
}]
console.log(stateData.map(
x=>
Object.fromEntries(Object.entries(x).filter(([\uu,val])=>/^\d+$/.test(val)))
))
您可以这样做(使用/^\d+$/
测试它是否都是数字):
const stateData=[{
"1999-00": "125236",
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“NA3”
}]
console.log(stateData.map(
x=>
Object.fromEntries(Object.entries(x).filter(([\uu,val])=>/^\d+$/.test(val)))
))
您可以使用isNaN()
检查值是否为数字
var stateData=[{
"1999-00": "125236",
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“不适用”
}]
var result=stateData.map(p=>Object.fromEntries(Object.entries(p.filter)([k,v])=>!(isNaN(vЮЮЮ));
console.log(result)
您可以使用isNaN()
检查值是否为数字
var stateData=[{
"1999-00": "125236",
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“不适用”
}]
var result=stateData.map(p=>Object.fromEntries(Object.entries(p.filter)([k,v])=>!(isNaN(vЮЮЮ));
console.log(result)
这是最短的,请尝试
let stateData=[{“1999-00”:“125236”,
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“不适用”}]
让结果=[]
for(让输入stateData[0]){
如果(+stateData[0][key]){
result.push(stateData[0][key])
}
}
console.log(result)
这是最短的,请尝试
let stateData=[{“1999-00”:“125236”,
"2000-01": "140119",
"2001-02": "151482",
"2002-03": "163385",
"2003-04": "184463",
"2004-05": "202575",
"2005-06": "239683",
"2006-07": "277286",
"2007-08": "326547",
"2008-09": "377346",
“2009-10”:“不适用”,
“2010-11”:“不适用”}]
让结果=[]
for(让输入stateData[0]){
如果(+stateData[0][key]){
result.push(stateData[0][key])
}
}
console.log(result)
一般来说,我处理此类问题的方式是:
Object.entries
将很好地满足我们的目的,它为我们提供了一个“元组”数组(元组只是一个数组),其中每个元组由2个值、一个键及其对应的值组成李>