All files object.js

100% Statements 13/13
100% Branches 6/6
100% Functions 2/2
100% Lines 12/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29        4x       7x 2x     5x 2x     3x   3x 4x 4x 4x 3x       3x    
import { type } from '@jslib-book/type';
 
// Object.create(null) 的对象,没有hasOwnProperty方法
function hasOwnProp(obj, key) {
  return Object.prototype.hasOwnProperty.call(obj, key);
}
 
export function pick(obj, paths) {
  if (type(obj) !== 'Object') {
    return {};
  }
 
  if (!Array.isArray(paths)) {
    return {};
  }
 
  const res = {};
 
  for (let i = 0; i < paths.length; i++) {
    const key = paths[i];
    console.log('key', key, obj[key]);
    if (hasOwnProp(obj, key)) {
      res[key] = obj[key];
    }
  }
 
  return res;
}