Immutable.js 地图:从值中查找键
Immutable.js Map: Find key from value
我有一个这样创建的 ImmutableJS 映射:
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;
我有一个这样创建的 ImmutableJS 映射:
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;