Mysql-подобный результат запроса с использованием lodash из массива json

У меня JSON выглядит так

[{"id":"7","name":"hello","username":"hell7s692","password":"dAggzyFMnBXq3RjoTWoJ3ndBkGhyU6njT2ZPlNfXVV8+XU3vvrTaULUAbPcmsqgj1NpXOpzieKRXWox\/BVcYrA==","email":"[email protected]","mobile_number":"7736527089","address":"hello","date":"24 Jan 2016 12:14:02","active":"1","commission":"5"},
{"id":"7","name":"hello","username":"hell7s692","password":"dAggzyFMnBXq3RjoTWoJ3ndBkGhyU6njT2ZPlNfXVV8+XU3vvrTaULUAbPcmsqgj1NpXOpzieKRXWox\/BVcYrA==","email":"[email protected]","mobile_number":"7736527089","address":"hello","date":"24 Jan 2016 12:14:02","active":"1","commission":"5"}
]

Из этого я хочу получить новый JSON, который соответствует условию в подобном запросе

т.е. я хочу получить JSON с условием

получить весь объект json с именем, начинающимся с буквы

Подобный запрос MySQL where name like he%

В настоящее время я знаю только о matches но он возвращает массив только с точным соответствием.

var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred',   'age': 40, 'active': false }
];

_.filter(users, _.matches({ 'age': 40, 'active': false }));
// → [{ 'user': 'fred', 'age': 40, 'active': false }]

Это вернется только с точным соответствием.

0

Решение

Вместо использования _.matches () вы можете использовать _.startsWith (), чтобы сопоставить первые n символов, которые вам нужны. Например, если вы хотите сопоставить имя, начинающееся с «он», вы можете сделать что-то вроде этого:

var result = [{
name: 'hello'
}, {
name: 'healthy'
}];

_.filter(result, function(obj) {
return _.startsWith(obj.name, 'he');
});

Это должно соответствовать обоим.

Вы также можете использовать регулярное выражение, чтобы соответствовать им:

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

‘i’ в ‘/ he / i’ означает игнорировать регистр, поэтому это также будет соответствовать name = ‘Hello’.

search () возвращает 1-ю позицию найденного шаблона, возвращает -1, если не найден. Поэтому, если вам нужно найти шаблон в любом месте строки, а не начинать с начала, вы можете проверить поиск ()> = 0.

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

будет соответствовать ‘привет’, ‘оболочка’, ‘здоровый’, ‘the’ и т. д.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]