【问题标题】:How to fetch result of matching string from array?如何从数组中获取匹配字符串的结果?
【发布时间】:2019-10-15 16:34:45
【问题描述】:

我有以下数组,当我输入数字“98”时,我想显示两个结果,当我输入“983”时,我想显示“字符串 2”的结果,但是当我输入数字“98”时,我没有得到任何结果 谁能帮我在这里做错了什么?

这是我的以下代码

    var array = [
        { name:"string 1", number:9845687, other: "that" },
        { name:"string 2", number:98325678, other: "that" }
    ];
    
    var foundValue = array.filter(obj=>obj.number===98);
    
    console.log(foundValue);

【问题讨论】:

    标签: javascript arrays angular7


    【解决方案1】:

    你可以使用includes方法通过以下方式做到这一点

    var array = [
        { name:"string 1", number:98456874, other: "that" },
        { name:"string 2", number:98325678, other: "that" }
    ];
    
    var foundValue = array.filter(obj => {
      let n = obj.number.toString()
      if(n.includes('98')) return obj
    });
    
    console.log(foundValue);

    希望对你有帮助

    更新

    正如你提到的数字不是字符串,所以你可以做的是在你comapre之前把它变成字符串,它会解决问题

    【讨论】:

    • 对不起,我的错误 number 属性是数据类型 number,我们不能在 number 类型上应用 include 属性
    • 你的意思是这个`号码:98456874`?
    • 我会将整个过滤器回调替换为:obj => obj.number.toString().includes('98')。至少去掉 if 语句,因为过滤器只期望真或假,而不是整个对象。
    【解决方案2】:

    您可以使用indexOf 来检查字符串是否包含子字符串。

        var array = [
            { name:"string 1", number:9845687, other: "that" },
            { name:"string 2", number:98325678, other: "that" }
        ];
        
        var foundValue = array.filter({
            var str = obj.number.toString();
            return str.indexOf(98) >= 0;
        });
        
        console.log(foundValue);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-08
      • 2014-02-06
      • 2022-01-25
      • 2017-10-11
      • 2020-09-19
      • 1970-01-01
      • 2022-11-19
      相关资源
      最近更新 更多