javascript - Immutable.js 映射 : Find key from value

标签 javascript immutable.js

我创建了一个 ImmutableJS map ,如下所示:

const seatMap = Immutable.fromJS({
  seatOne: 'Martin',
  seatTwo: 'Emelie',
  seatThree: 'Erik'
});

我想找出特定人员正在使用哪个座位。可以假设这些值是唯一的。

到目前为止我已经想出了一个解决方案:

const getSeatFromPerson = (seatMap, person) => {
  const [ ...keys ] = seatMap.keys();

  for (let i = 0; i < keys.length; i++ {
    if (seatMap.get(keys[i]) === person) {
      return keys[i];
    }
  }

  return null;
};

console.log(getSeatFromPerson(seatMap, 'Martin')); // Should be "seatOne"
console.log(getSeatFromPerson(seatMap, 'Erik')); // Should be "seatThree"
console.log(getSeatFromPerson(seatMap, 'Christopher')); // Should be null

但是这个解决方案感觉非常“笨重”并且不是很整洁或快速。是否有内置方法或更好的方法来做到这一点?

最佳答案

您可以使用这个单行函数,该函数使用 Array.prototype.find :

const getSeatFromPerson = (seatMap, person) => [...seatMap.keys()].find(seat => seatMap.get(seat) === person) || null;

关于javascript - Immutable.js 映射 : Find key from value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62675842/

相关文章:

javascript - 每次出现类(class)时都会包装内容 - 可能吗?

javascript - 使用 React Immutability helpers 或 Immutable js React 合并不可变对象(immutable对象)数组

javascript - 如何解决state.set is not a function错误?

javascript - OrderedMap 中某项的索引

javascript - 在 Bootstrap 中对同一元素使用两个数据切换

javascript - 悬停 fadeToggle 与多个 div

javascript - 使用 JavaScript 在 Web 浏览器中捕获 Apple Remote 事件

javascript - 是否可以仅在它们共享的键/属性之间比较两个对象?

javascript - Ramda.map over Immutable.List 如何返回列表而不是数组?

reactjs - 使用 immutable.js 进行 React shouldComponentUpdate 的最佳实现是什么