JS ES6 中的翻转功能

flip function in JS ES6

我正在使用以下代码(摘自 facebook 的 immutable.js 页面):

    Immutable.Seq({a:1, b:1, c:1})
  .flip().map(key => key.toUpperCase()).flip().toObject();

我正在尝试查找 flip() 函数的定义位置。 检查 Seq 对象的属性,然后在将 flip() 应用于 Seq 对象后,它 returns:

Seq [ '_object', '_keys', 'size' ]

Seq flip [ '_iter',
  'size',
  'flip',
  'reverse',
  'has',
  'includes',
  'cacheResult',
  '__iterateUncached',
  '__iteratorUncached' ]

我猜它是不可变库的一部分。 lodash有类似的功能,但又不一样。

维克拉姆

你在找这个吗?

mixin(KeyedIterable, {

  // ### More sequential methods

  flip() {
    return reify(this, flipFactory(this));
  },

https://github.com/facebook/immutable-js/blob/a18350f595fcb33cd6d9680be451111d1c196c1f/src/IterableImpl.js#L494

有关文档,请参阅 https://facebook.github.io/immutable-js/docs/#/Collection.Keyed

它翻转键和值,所以 {a: 'x', b: 'y'} 变成 {x: 'a', y: 'b'}