首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中的多个字符串中选择数字字符串(仅包含数字的字符串)而忽略其他字符串?

如何在javascript中的多个字符串中选择数字字符串(仅包含数字的字符串)而忽略其他字符串?
EN

Stack Overflow用户
提问于 2020-06-13 12:09:05
回答 6查看 57关注 0票数 1

如何选择数值元素以及如何忽略字母元素(在本例中,"2009-10":"NA","2010-11":"NA“)。

代码语言:javascript
复制
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" }]

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2020-06-13 12:24:41

我处理这类问题的一般方法是:

  1. I首先将对象转换为相关数据的数组。在本例中,Object.entries将很好地满足我们的需要,它给出了一个“元组”数组(元组只是一个数组),其中每个元组由2个值、一个键及其相应的值组成。
  2. 我们可以过滤元组数组,这是我们发现给定值是否为有效数字的地方。我们试图将其解析为一个数字,并将其解释为布尔值。这里需要知道的关键是,0).
  3. Finally返回NaN (不是数字),而Boolean(NaN)是false (值得注意,Boolean(0)也是假的),所以只有当您知道数字永远不等于NaN时,这个方法才能工作--我们可以使用Object.fromEntries.

将这个经过过滤的元组列表转换回一个对象。

代码语言:javascript
复制
const input = {
  "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"
};

const output = Object.fromEntries(
  Object.entries(input)
    .filter(([k, v]) => 
      Boolean(Number(v))
    )
);

console.log(output);

票数 1
EN

Stack Overflow用户

发布于 2020-06-13 12:15:18

尝试map并在其中获取对象的条目,然后过滤与数字regex /\d+/不匹配的条目。就像这样:

代码语言:javascript
复制
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+/))));

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2020-06-13 12:17:27

您可以使用一个简单的正则表达式/^\d+$/来检查字符串值是否只有数字。如果值传递正则表达式,则可以选择它,如果失败则忽略它。

代码语言:javascript
复制
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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62359547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档