javascript - 根据格式过滤数组项

标签 javascript html arrays reactjs redux

我有一个包含两个元素的数组。 当我的 sportsPaperRank 是这种格式 xxx-xx-xxxx 且权重以 80 开头时,并且 search.sportsSwim === "hi"|| search.sportsSwim ===“hello”,我需要忽略该值, 但现在它忽略了这两个项目,但我需要显示第一个项目,因为重量的值从 55 开始。 你能告诉我如何修复它吗?

现在我做了正则表达式检查和匹配检查, 但没有任何作用。 你能告诉我如何修复它吗?

let data = [
    {
      "weight": 555666111,
      "sportsBall": "wewewe",
      "sportsSwim": "hi",
      "sportsPaperRank": "xxx-xx-0000",
      "sportsHeight": "wew",
      "sportsRing": "yuyu",
      "sportsBat": "yuyu-ioioioio",
      "playing": "erioioerio"
    },
    {
      "weight": 80035647,
      "sportsBall": "klklkl",
      "sportsSwim": "hello",
      "sportsPaperRank": "xxx-xx-0000",
      "sportsRing": "yuyu",
      "sportsBat": "yuyu-ioioioio",
      "playing": "erioioerio"
    },
{
 "weight": 80035649,
 "sportsBall": "klklkl",
 "sportsSwim": "hello",
 "sportsPaperRank": "22-2340000",
 "sportsRing": "yuyu",
 "sportsBat": "yuyu-ioioioio",
 "playing": "erioioerio"
   }
  ];

  console.log(
            'data.--->',
            data
        );
        console.log(
            'data[0]--->',
            data[0].sportsPaperRank
        );
        let patternEIN = /^\d{2}\-?\d{7}$/;
        //let patternEIN = /^\d{3}-\d{2}-\d{4}$/;
        // let patternEIN = (/^\d{3}-?\d{2}-?\d{4}$/ | /^XXX-XX-XXXX$/);

        console.log('no dashpattern check--->', ('xxxxx0000' === patternEIN));

        console.log('pattern check hard --->', ('xxx-xx-0000' === patternEIN));
        console.log('pattern check s--->', (data[0].sportsPaperRank === patternEIN));
        console.log('pattern check .toString()--->', (data[0].sportsPaperRank.toString() === patternEIN));

        let resultSports = data.filter(
            search => {
                console.log("pattern matching ", search.sportsPaperRank.match(patternEIN));
                (search.weight) &&
                    (search.weight.toString().startsWith('80')) &&
                    (search.sportsSwim === "hi" || search.sportsSwim === "hello") &&
                    (search.sportsPaperRank.match(/xxx/g))

            }

        );

        console.log(' resultSports--->', resultSports);

最佳答案

您可以通过在 if() 条件下使用 regex 来获取结果。这是您的代码片段:

 var data1 = [
        {
          "weight": 555666111,
          "sportsBall": "wewewe",
          "sportsSwim": "hi",
          "sportsPaperRank": "xxx-xx-0000",
          "sportsHeight": "wew",
          "sportsRing": "yuyu",
          "sportsBat": "yuyu-ioioioio",
          "playing": "erioioerio"
        },
        {
          "weight": 80035647,
          "sportsBall": "klklkl",
          "sportsSwim": "hello",
          "sportsPaperRank": "xxx-xx-0000",
          "sportsRing": "yuyu",
          "sportsBat": "yuyu-ioioioio",
          "playing": "erioioerio"
        }
      ];

    var resultSports = data1.filter(function(search){
        if((!search.sportsPaperRank.match(/\w{4}-\w{2}-[0-9]{4}/gm)) && (!search.weight.toString().match(/^80/gm)) && ((search.sportsSwim === "hi") || (search.sportsSwim === "hello"))){
            return search;
        }
    });
    console.log(resultSports);

在这里,您将获得具有 weight:555666111"sportsPaperRank": "xxx-xx-0000" 的单个对象。

您可以在此 link 中检查我的 sportsPaperRank:xxxx-xx-0000 的正则表达式

您可以在这个 link 中检查我的正则表达式中的 "weight": 555666111

关于javascript - 根据格式过滤数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57859781/

相关文章:

HTML 导入到 HTML 问题

java - 如何确保数组中包含值?

arrays - 如何将匹配的数组中的项目分组到另一个数组中?

javascript - 我们可以减少cognos报告的Excel 2007输出中的列大小并换行文本吗

javascript - 如何风格化警告框中的文本?

顶部的 HTML 静态栏覆盖了该部分的链接

ios - 通过索引路径更改 CLLocationCooperative2DMake 使用数组

java - 如何在客户端查看JSP文件的来源

javascript - 捕获 window.onbeforeunload

javascript - 从内容上方的重叠区域中删除三 Angular 形的阴影?