Mysql like query result using lodash from json array

后端 未结 1 1160
小鲜肉
小鲜肉 2021-01-28 22:21

I have JSON look like this

[{\"id\":\"7\",\"name\":\"hello\",\"username\":\"hell7s692\",\"password\":\"dAggzyFMnBXq3RjoTWoJ3ndBkGhyU6njT2ZPlNfXVV8+XU3vvrTaULUA         


        
相关标签:
1条回答
  • 2021-01-28 23:08

    Instead of using _.matches(), you can use _.startsWith() to match the first n-characters you need to. For example, if you want to match name starting with 'he', you can do something like this:

    var result = [{
      name: 'hello'
    }, {
      name: 'healthy'
    }];
    
    _.filter(result, function(obj) {
      return _.startsWith(obj.name, 'he');
    });
    

    This should match both.

    You can also use regular expression to match them:

    _.filter(result, function(obj) {
        return obj.name.search(/he/i) === 0;  // i = ignore case
    });
    

    'i' in '/he/i' means ignore case, so this will match name = 'Hello' also.

    search() returns the 1st position of the pattern it found, it returns -1 if not found. So if you need to find a pattern anywhere in a string instead of starting from the beginning, you can check for search() >= 0. So

    _.filter(result, function(obj) {
        return obj.name.search(/he/i) >= 0;
    });
    

    will match 'hello', 'shell', 'healthy', 'the', and etc

    0 讨论(0)
提交回复
热议问题