flo-utils
Version:
54 lines (50 loc) • 1.37 kB
JavaScript
/**
* 数据保存,属性处理
*/
import isPlainObject from 'lodash/isPlainObject';
import isArray from 'lodash/isArray';
/**
* 数据属性保留
*
* 1、属于includes
* 2、不属于 excludes
* 3、不在两者中的 + excludes 不为true = 其他属性保留
*
* @export
* @param {any[] | any} [ds=[]]
* @param {string[]} [includes=[]]
* @param {string[]} [excludes=[]]
* @returns
*/
export default function saveHook() {
var ds = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var includes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var excludes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
if (!ds) return [];
var isO = isPlainObject(ds);
var isA = isArray(ds);
var isCA = isArray(includes);
var isEA = isArray(excludes);
if (!isO && !isA) return ds;
if (!isCA && !isEA) return ds;
if (isO) {
var o = {};
var ks = Object.keys(ds);
ks.forEach(function (k) {
if (isArray(includes) && includes.includes(k)) {
o[k] = ds[k];
} else if (isArray(excludes) && !excludes.includes(k)) {
o[k] = ds[k];
} else if (!excludes) {
o[k] = ds[k];
}
});
return o;
}
if (isA) {
return ds.map(function (d) {
return saveHook(d, includes, excludes);
});
}
return ds;
}