为了账号安全,请及时绑定邮箱和手机立即绑定

从对象数组中获取价值的更好方法是什么?数组过滤器() 替代?

从对象数组中获取价值的更好方法是什么?数组过滤器() 替代?

萧十郎 2022-09-29 16:31:42
const incoming = "disi";const sexEnumeration = [  { key: "bebek", label: "ребенок" },  { key: "erkek", label: "Мужчина" },  { key: "disi", label: "женская кошка" }];let message = sexEnumeration.filter((item) =>        item.key == incoming ? item.label : false      )[0].labelconsole.log(sexEnumeration.filter((item) => item.key == incoming ? item.label : false)[0].label);有没有更好的方法来获取消息,而不是这个丑陋的数组过滤器。编辑两种解决方案都很好。我会去地图解决方案。但我认为最好对小数组使用 .find。我已经在一个 vue 示例中应用了解决方案。https://codepen.io/kaanna/pen/BajKPOr
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

可以使用 Array.find()而不是使用 ,它返回数组中通过回调函数中实现的测试的所有元素,它Array.filter()sexEnumeration

返回提供的数组中满足所提供测试函数的第一个元素的值

这是如何完成的:

const message = (sexEnumeration.find((item) =>
    item.key === incoming ? item.label : false
    )).label

以下是工作,简洁的示例(包括@3limin4t0r的建议):

const incoming = "disi";

const sexEnumeration = [

  { key: "bebek", label: "ребенок" },

  { key: "erkek", label: "Мужчина" },

  { key: "disi", label: "женская кошка" }

];


const { label: message } = sexEnumeration.find(({ key }) => (

  key == incoming

));


console.log(message);


查看完整回答
反对 回复 2022-09-29
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

一种选择是将数组转换为 Map 以进行快速查找。在这里,数组的使用似乎并不合适。这确实假定项属性在项之间是唯一的。key


const sexEnumeration = [

  { key: "bebek", label: "ребенок" },

  { key: "erkek", label: "Мужчина" },

  { key: "disi", label: "женская кошка" }

];

const sexEnumerationMap = new Map(sexEnumeration.map(item => [item.key, item]));


console.log(sexEnumerationMap.get("disi").label);

console.log(sexEnumerationMap.get("bebek").label);

console.log(sexEnumerationMap.get("erkek").label);


查看完整回答
反对 回复 2022-09-29
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信