lodash

lxf2023-12-19 18:50:01

序言

本文详细介绍lodash-super开源库。

这是一个lodash增强版的工具库,由于lodash会提供了最基本的一些专用工具方式,我们在业务中使用中,通常需要对它进行再度封装形式,较为不便

因此,该库提供了一个在 需求场景中更为通用工具库。

希望对大家有帮助!

愿大家点一个star,或是一同共创。

组装

npm install lodash-superyarn add lodash-super

方式

_S.array2obj(array, key = "key", value = "value")

对象数组(由目标所组成的二维数组) 转化成 目标

适用标识目录,前面是标识二维数组,然后端必须标识目标

事例

const obj = _S.array2obj([{key:'label1',value:1},{key:'label2',value:2}])
// => {label1:1,label2:2} 
const obj1 = _S.array2obj([{name:'label1',id:1},{name:'label2',id:2}],'name','id')
// => {label1:1,label2:2} 

代码

/**
 *
 * @param {Array} array 等待处理的二维数组
 * @param {String} key 构成对象键
 * @param {String} value 构成目标数值
 * @returns (Object): 回到形成的全新目标
 */
function array2obj(array, key = "key", value = "value") {
  const object = {};
  if (!isArray(array)) {
    return console.error("传到的并不是二维数组");
  }
  for (let index = 0; index < array.length; index  = 1) {
    const item = array[index];
    object[item[key]] = item[value];
  }
  return object;
}
export default array2obj;

_S.obj2array(obj, key = "key", value = "value")

将 目标 转化成 对象数组(由目标所组成的二维数组)

与 _S.array2obj() 反过来

(Array): 回到形成的全新二维数组。

事例

const obj = _S.obj2array({label1:1,label2:2})
// =>  [{key:'label1',value:1},{key:'label2',value:2}]
const obj1 = _S.obj2array({label1:1,label2:2} ,'name','id')
// =>  [{name:'label1',id:1},{name:'label2',id:2}]

源代码

/**
 *
 * @param {Object} obj 等待处理的对象
 * @param {String} key 构成对象键
 * @param {String} value 构成目标数值
 * @returns (Array): 回到形成的全新二维数组
 */
function obj2array(obj, key = "key", value = "value") {
  const array = [];
  Object.keys(obj).forEach((ikey) => {
    const ivalue = obj[ikey];
    array.push({
      [key]: ikey,
      [value]: ivalue,
    });
  });
  return array;
}

_S.filterBy(array, key='id', value, name='name')

取下 对象数组 中满足标准的这一项项 的特定数值

简单化 filter 的选值

事例

const obj = _S.filterBy([{id:1,name:'1'},{id:2,name:'2'}], 'id', 1, 'name')
// =>  '1'

源代码

/**
 *
 * @param {Array} array 等待处理的二维数组
 * @param {String} key 配对 value 的对象的键
 * @param {String} value 与 必须相同 的value值
 * @param {any} name 必须获得的目标值
 * @returns 获得过的 name 值
 */
function filterBy(array, key = "id", value, name = "name") {
  const result = [];

  if (!array.length) {
    return result;
  }
  const arrayFilter = array.filter((item) => item[key] === value);
  if (arrayFilter.length > 0) {
    arrayFilter.forEach((item) => {
      result.push(item[name]);
    });
    if (result.length <= 1) {
      return result[0];
    } else {
      return result;
    }
  }
  return undefined;
}

本站是一个以CSS、JavaScript、Vue、HTML为中心的前端开发技术网址。我们的使命是为众多前端工程师者提供全方位、全方位、好用的前端工程师专业知识和技术服务。 在网站上,大家可以学到最新前端开发技术,掌握前端工程师最新发布的趋势和良好实践。大家提供大量实例教程和实例,让大家可以快速上手前端工程师的关键技术和程序。 本站还提供了一系列好用的工具软件,帮助你更高效地开展前端工程师工作中。公司提供的一种手段和软件都要经过精心策划和改进,能够帮助你节约时间精力,提高研发效率。 此外,本站还拥有一个有活力的小区,你可以在社区里与其它前端工程师者沟通交流技术性、交流经验、处理问题。我们坚信,街道的能量能够帮助你能够更好地进步与成长。 在网站上,大家可以寻找你需要的一切前端工程师网络资源,使您成为一名更加出色的网页开发者。欢迎你添加我们的大家庭,一起探索前端工程师的无限潜能!