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

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].label



console.log(sexEnumeration.filter((item) => item.key == incoming ? item.label : false)[0].label);

有没有更好的方法来获取消息,而不是这个丑陋的数组过滤器。


编辑两种解决方案都很好。我会去地图解决方案。但我认为最好对小数组使用 .find

我已经在一个 vue 示例中应用了解决方案。

https://codepen.io/kaanna/pen/BajKPOr


萧十郎
浏览 80回答 2
2回答

BIG阳

可以使用 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);

幕布斯7119047

一种选择是将数组转换为 Map 以进行快速查找。在这里,数组的使用似乎并不合适。这确实假定项属性在项之间是唯一的。keyconst 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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript