У меня 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 }]
Это вернется только с точным соответствием.
Вместо использования _.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’ и т. д.
Других решений пока нет …