function pluckDeepWithSelectors(coll, selectors) {
  // No more selectors
  if (!selectors.length) return coll;

  // Pluck the current value from the given selector
  let sel = selectors[0];

  let filtered = coll;

  // Filter if applicable
  const filter = parseFilter(sel);

  if (filter) {
    filtered = filterColl(coll, filter);

    if (!filtered || (Array.isArray(filtered) && !filtered.length)) return null;

    sel = filter.selector;
  }

  const p = pluck(filtered, sel);

  // No values found for current selector
  if (isUndef(p) || (Array.isArray(p) && p.some(isUndef))) {
    return null;
  }

  // Recursively call with the remaining selectors
  return pluckDeepWithSelectors(p, selectors.slice(1));
}
function pluckDeepWithSelectors(coll, selectors) {
  
  if (!selectors.length) return coll;

  
  let sel = selectors[0];

  let filtered = coll;

  
  const filter = parseFilter(sel);

  if (filter) {
    filtered = filterColl(coll, filter);

    if (!filtered || (Array.isArray(filtered) && !filtered.length)) return null;

    sel = filter.selector;
  }

  const p = pluck(filtered, sel);

  
  if (isUndef(p) || (Array.isArray(p) && p.some(isUndef))) {
    return null;
  }

  
  return pluckDeepWithSelectors(p, selectors.slice(1));
}
function pluckDeepWithSelectors ( coll , selectors ) { // No more selectors if ( ! selectors . length ) return coll ; // Pluck the current value from the given selector let sel = selectors [ 0 ] ; let filtered = coll ; // Filter if applicable const filter = parseFilter ( sel ) ; if ( filter ) { filtered = filterColl ( coll , filter ) ; if ( ! filtered || ( Array . isArray ( filtered ) && ! filtered . length ) ) return null ; sel = filter . selector ; } const p = pluck ( filtered , sel ) ; // No values found for current selector if ( isUndef ( p ) || ( Array . isArray ( p ) && p . some ( isUndef ) ) ) { return null ; } // Recursively call with the remaining selectors return pluckDeepWithSelectors ( p , selectors . slice ( 1 ) ) ; }
Recursively walk
Recursively walk