#javascript #arrays #node.js #underscore.js
#javascript #массивы #node.js #underscore.js
Вопрос:
Я пытаюсь запросить json, используя подчеркивание js, и я как бы застрял. Я хочу выполнить операцию IN, например, из SQL, но я не уверен, как это сделать, используя функцию _.where .
Например,
В SQL запрос будет выглядеть так:
where n = 10 AND color in ('red', 'pink', 'black');
Но при написании этого в подчеркивании я не могу этого сделать (набор записей — это массив объектов)
_.where( recordset, { n: 10, color: 'red' || 'pink' || 'black'});
Это просто дает мне объекты, где n = 10, а цвет только красный. Есть ли другой способ сделать это?
Заранее спасибо
Комментарии:
1. Что касается того, что вы пробовали, выражение JS
'red' || 'pink' || 'black'
вычисляется'red'
, поэтому подчеркивание никогда даже не видит'pink'
'black'
части и этого выражения. Я не уверен насчет подчеркивания, но, возможно, оно позволяет передавать массив значений или что-то в этом роде? Проверьте документ.
Ответ №1:
let colors = ['red', 'pink', 'black']
let resultset = _.select(recordset, e => e.n === 10 amp;amp; _.contains(colors, e.color))
или в более старом js
var resultset = _.select(recordset, function (e) {
return e.n === 10 amp;amp; _.contains(['red', 'pink', 'black'], e.color);
});
_.select
принимает массив в качестве первого аргумента (эквивалентного FROM
in SQL) и функцию, возвращающую true / false в качестве второго аргумента (эквивалентного WHERE
in SQL).