我有一个Map实例,它将有零个或1个条目。这是一个演示:

class Todo {
   constructor(
   public id:string,
   public title:string,
   public description: string ) {}
}
const todo1 = new Todo('1', 't1', 'Sarah OConnor');
const m:Map<string, Todo> = new Map();
m.set('1', todo1);
const todoInMap= m.entries().next().value[1];
console.log("The todo in the map is: ", todoInMap);


这将记录todoInMap实例在地图中的时间,但是如果我们m.clear()则会收到错误消息。

该函数可用于避免错误,我只是想知道Map API是否具有更简单的方法?

function getMapValue<E>(m:Map<any, E>) {
  if (!m.entries().next().done) {
    return m.entries().next().value;
  }
  return null;
}


Ended up putting adding a utility method to Slice Utilities

/**
 * Gets the current active value from the `active`
 * Map.
 *
 * This is used for the scenario where we are manging
 * a single active instance.  For example
 * when selecting a book from a collection of books.
 *
 * The selected `Book` instance becomes the active value.
 *
 * @example
 * const book:Book = getActiveValue(bookStore.active);
 * @param m
 */
export function getActiveValue<E>(m:Map<any, E>) {
  if (m.size) {
    return m.entries().next().value[1];
  }
  return null;
}```

最佳答案

我认为这种选择会更好:

function getMapValue<E>(m:Map<any, E>) {
  if (m.size) {
    return m.entries().next().value;
  }
  return null;
}


将size作为属性非常奇怪,而不是length或size()而是它的大小:)

关于javascript - 从零或1项的映射中获取值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58885605/

10-12 14:25