как перебирать два массива одновременно с lodash - PullRequest
0 голосов
/ 31 января 2019

У меня

A = [1,2,3,4,5,6,7]
B = [3,5,9]
I want to get an array C containing the last elements < than elements in B, like
C = [2,4,7], by using Lodash

Я пытался

C=_.map(A, a = (v) -> v == _.findLast(A, b = (v) -> v < _.forEach(B, c = (v) -> v==v)))

, который не работает.Выше я использовал coffeescript вместо javascript, но, пожалуйста, ответьте также: я хочу решение, использующее lodash, без явного циклического просмотра элементов B, спасибо.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я знаю, что вы сказали, что хотите душу lodash, но на случай, если вам интересно, вот способ получить желаемый массив, используя vanilla ES6:

const A = [1, 2, 3, 4, 5, 6, 7];
const B = [3, 5, 9];
const C = findEls(A, B);

function findEls(A, B) {
  const copy = [...A].reverse(); //Copy since reverse is an in-place operation
  return B.map(b => {
    return copy.find(a => a < b);
  });
}

console.log(C);
0 голосов
/ 31 января 2019

forEach является избыточным и просто возвращает исходную коллекцию:

const A = [1,2,3,4,5,6,7]
const B = [3,5,9]

// C = [2,4,7], by using Lodash

const result = _.map(B, n => _.findLast(A, m => m < n));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...