Как вы выполняете операцию ввода (SQL), используя подчеркивание js?

#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).