@oopsunome/remap-indexed-keys-after-omit

针对键为 `index-x` 或 `x-index-y` 类似模式的被索引对象,可在移除某个键值对后,顺序重新索引所有键。


Keywords
object, index, helper, mapper, util, utilities, library, modules, mapKeys, omit, remapIndexedKeys, remapKeys, oopsunome, objectmapper, algorithms-and-data-structures, object-helper, object-methods
License
MIT
Install
npm install @oopsunome/remap-indexed-keys-after-omit@1.0.3

Documentation

Codacy Badge Build Status Coverage Status dependencies Status

@oopsunome/remap-indexed-keys-after-omit

针对键为 index-xx-index-y 类似模式的被索引对象,如:

{
  '0-0': 'one',
  '1-0': 'two',
  '2-0': 'three',
}

可在移除某个键值对后,顺序重新索引所有键。

@oopsunome/remap-indexed-keys-after-omit 支持在浏览器以及 Node.js 环境下使用。Node.js 方面,持续且仅支持最新 LTS 版本的。

目录

安装

# 使用 NPM
$ npm i @oopsunome/remap-indexed-keys-after-omit lodash

# 使用 Yarn
$ yarn add @oopsunome/remap-indexed-keys-after-omit lodash

# 使用 PNPM
$ pnpm install @oopsunome/remap-indexed-keys-after-omit lodash

使用

remapIndexedKeysAfterOmitSync(options)

  • options {Object}
    • object {Object} 从小到大索引的对象
    • omitIndex {Number} 待删除键值对的索引
    • keyPattern {String} 对象的键模式
    • separator {String} 分裂键的分隔符
    • indexPlaceholderInKeyPattern {String} 指定索引占位
    • gap {Number} 递减 / 递增幅度
  • 返回: {Object} 被顺序重新索引所有键的对象
import { remapIndexedKeysAfterOmitSync } from '@oopsunome/remap-indexed-keys-after-omit';

(function() {
  const rslt = remapIndexedKeysAfterOmitSync({
    object: {
      '0-0': 254,
      '1-0': 7892,
      '2-0': 67568,
      '3-0': 23,
      '4-0': 657,
      '5-0': 3245,
      '6-0': 789,
      '7-0': 234,
      '8-0': 456,
      '9-0': 675,
      '10-0': 596,
    },
    omitIndex: 9,
    keyPattern: 'index-x',
    separator: '-',
    indexPlaceholderInKeyPattern: 'index',
    gap: 1,
  });

  console.table(rslt);

  /**
   * 输出:
   * 
   * {
   *   '0-0': 254,
   *   '1-0': 7892,
   *   '2-0': 67568,
   *   '3-0': 23,
   *   '4-0': 657,
   *   '5-0': 3245,
   *   '6-0': 789,
   *   '7-0': 234,
   *   '8-0': 456,
   *   '9-0': 596,
   * }
   */
})();

remapIndexedKeysAfterOmit(options)

  • options {Object}
    • object {Object} 从小到大索引的对象
    • omitIndex {Number} 待删除键值对的索引
    • keyPattern {String} 对象的键模式
    • separator {String} 分裂键的分隔符
    • indexPlaceholderInKeyPattern {String} 指定索引占位
    • gap {Number} 递减 / 递增幅度
  • 返回: {Promise} 被顺序重新索引所有键的对象
import { remapIndexedKeysAfterOmit } from '@oopsunome/remap-indexed-keys-after-omit';

(async () => {
  console.table(await remapIndexedKeysAfterOmit({
    object: {
      '0-0': 254,
      '1-0': 7892,
      '2-0': 67568,
      '3-0': 23,
      '4-0': 657,
      '5-0': 3245,
      '6-0': 789,
      '7-0': 234,
      '8-0': 456,
      '9-0': 675,
      '10-0': 596,
    },
    omitIndex: 9,
    keyPattern: 'index-x',
    separator: '-',
    indexPlaceholderInKeyPattern: 'index',
    gap: 1,
  }));

  /**
   * 输出:
   * 
   * {
   *   '0-0': 254,
   *   '1-0': 7892,
   *   '2-0': 67568,
   *   '3-0': 23,
   *   '4-0': 657,
   *   '5-0': 3245,
   *   '6-0': 789,
   *   '7-0': 234,
   *   '8-0': 456,
   *   '9-0': 596,
   * }
   */
})();

参与开发

准备开发环境

详细参见 SETUP.md

安装依赖

@oopsunome/remap-indexed-keys-after-omit 使用 Yarn 包管理器,执行 yarn install 安装依赖。

开始开发

yarn start

生产构建

yarn build

测试

yarn test

贡献指南

仔细查阅 CONTRIBUTING.md 以了解详情。

证书

[@oopsunome/manual-sort][@oopsunome/manual-sort] 获得了 MIT 许可,仔细查阅 LICENSE.md 以了解详情。

待办

  • 支持操作 从大到小索引 的对象;
  • 为所有的配置提供默认值;
  • 支持 解构直接引用 2 种暴露接口的方式;
  • 提供同步、异步 2 种编程方式,异步编程采用 Promise
  • 支持构建 CommonJS, AMD, ESM, UMD 模式的模块;
  • 不将 lodash 等库打包;
  • 功能测试;
  • 捆绑 Git 倒钩
  • ESlint 检测;
  • 自动化生成所有依赖的开源证书;
  • 使用 David DM 实现 依赖是否最新 检测;
  • 使用 Travis CI 实现持续集成;
  • 使用 Coveralls 可视化测试用例覆盖率;
  • 使用 Codacy 实现代码质量检测;
  • 更新日志;
  • 自动化发布;
  • 在什么场景下使用 @oopsunome/remap-indexed-keys-after-omit?
  • 编写 开发环境指南
  • 文档:在哪里可以获得更多帮助?
  • 文档:设计思想;
  • 文档:维护策略;
  • 文档:编码风格指南
  • 编写 发布流程指南
  • 编写 Git 指南
  • 编写 命名指南
  • 编写 版本指南
  • 性能测试;