Javascript对象数组:返回值的最佳方法是什么?

Dav*_*dMM 1 javascript

我在Javascript中有一个对象数组,其中包含两个具有此结构的键:

"data": [
  {
  "description": "Unknown",
  "type": 0
  },
  {
  "description": "On",
  "type": 1
  },
  {
  "description": "Off",
  "type": 2
  },
  ...
  ]
Run Code Online (Sandbox Code Playgroud)

我想传递一个'type'数值,如果它在数组中找到它,则返回描述值.例如,如果我传递'0',我希望它返回'未知'.

这可以通过for或forEach循环轻松完成,但是JS中有一个内置函数可以让我在一行中完成它吗?

Nin*_*olz 6

你也可以使用 find

var data = [{ description: "Unknown", type: 0 }, { description: "On", type: 1 }, { description: "Off", type: 2 }];
  
console.log(data.find(({ type }) => type === 1).description);
Run Code Online (Sandbox Code Playgroud)

或者为了更快地访问,请使用类型的哈希表

var data = [{ description: "Unknown", type: 0 }, { description: "On", type: 1 }, { description: "Off", type: 2 }], 
    types = Object.assign(...data.map(({ type, description }) => ({ [type]: description })));
  
console.log(types[1]);
Run Code Online (Sandbox Code Playgroud)

或者a Map

var data = [{ description: "Unknown", type: 0 }, { description: "On", type: 1 }, { description: "Off", type: 2 }], 
    types = data.reduce((m, { type, description }) => m.set(type, description), new Map);
  
console.log(types.get(1));
Run Code Online (Sandbox Code Playgroud)