You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中如何用Filter从JSON动态获取指定类型的首个可选值?

解决方法:用filter实现,更推荐find方法

首先,你用map出现[null,"1"]的原因是:map会遍历数组里的每一项,当项的valueType不等于e时,你的回调函数没有返回有效内容(或返回了null),所以这些位置会填充undefined(或null),最终得到一个混合了空值和目标值的数组,这显然不是你想要的。

当然可以用filter实现需求,filter的作用是筛选出所有符合条件的项,返回一个新数组,之后我们只需要取这个数组的第一个元素,再提取它的首个possibleValues值就行:

// 基础写法,处理无匹配项的情况
const matchedItems = myjson.listOfOptions.filter(item => item.valueType === e);
const result = matchedItems.length > 0 ? matchedItems[0].possibleValues[0] : undefined;

或者用更简洁的链式调用(搭配可选链避免无匹配时的报错):

const result = myjson.listOfOptions.filter(item => item.valueType === e)[0]?.possibleValues[0];

不过这里要提一句:用find方法会更高效、更直接。因为filter会遍历整个数组筛选所有匹配项,但你只需要第一个匹配的项,find方法找到第一个符合条件的项后就会停止遍历,性能更好:

// 用find获取第一个匹配项,再提取目标值
const matchedItem = myjson.listOfOptions.find(item => item.valueType === e);
const result = matchedItem ? matchedItem.possibleValues[0] : undefined;

// 或者用ES6可选链简化
const result = myjson.listOfOptions.find(item => item.valueType === e)?.possibleValues[0];

当e设为"integer"时,上面的代码都会返回你期望的"1",不会出现数组形式的结果。

内容的提问来源于stack exchange,提问作者DadyByte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:34:02