UNPKG

wsemi

Version:

A support package for web developer.

68 lines (57 loc) 1.75 kB
import every from 'lodash/every' import differenceBy from 'lodash/differenceBy' import isarr from './isarr.mjs' import isestr from './isestr.mjs' import isobj from './isobj.mjs' /** * 由ltdtAll陣列移除ltdtDel陣列,只會針對ltdtDel內各元素的指定key來查找 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/ltdtpull.test.mjs Github} * @memberOf wsemi * @param {Array} ltdtAll 輸入要被刪除的物件陣列 * @param {Array} ltdtDel 輸入要刪除的物件陣列 * @param {String} key 輸入要比對物件的key值 * @returns {Array} 回傳被刪除的物件陣列 * @example * * console.log(ltdtpull([{ x: 1, y: 'y1' }, { x: 2, y: 'y2' }], [{ x: 1, y: 'y3' }], 'x')) * // => [ { x: 2, y: 'y2' } ] * * console.log(ltdtpull([{ id: 1, v: 'v1' }, { id: 2, v: 'v2' }, { id: 3, v: 'v3' }], [{ id: 1, v: '-v1' }, { id: 3, v: '-v3' }], 'id')) * // => [ { id: 2, v: 'v2' } ] * */ function ltdtpull(ltdtAll, ltdtDel, key) { //check if (!isarr(ltdtAll)) { //可能會傳空陣列, 故需要isarr return [] } if (!isarr(ltdtDel)) { //可能會傳空陣列, 故需要isarr return [] } if (!isestr(key)) { return [] } //check let bAll = every(ltdtAll, (v) => { return isobj(v) }) if (!bAll) { return [] } //check if (ltdtDel.length === 0) { //傳空陣列就不刪除 return ltdtAll } //check let bDel = every(ltdtDel, (v) => { return isobj(v) }) if (!bDel) { return [] } //differenceBy let t = differenceBy(ltdtAll, ltdtDel, key) return t } export default ltdtpull