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

JavaScript按键数组从对象提取值时出现filter不是函数报错

报错产生原因

filter()是JavaScript数组类型的内置实例方法,仅能在数组对象上调用。你代码中定义的colors是普通键值对对象(Object类型),本身不存在filter方法,因此调用时会抛出colors.filter is not a function的错误。
另外你原本的实现逻辑也存在偏差:对象的键值访问不需要遍历筛选,直接通过键名索引就能拿到对应值。

修复后的正确代码

直接通过对象[键名]的语法访问对应属性值,配合map遍历键名数组即可批量提取目标值:

var colors = {
    key1:"Red",
    key2:"Blue",
    key3:"Green",
    key4:"Black"
}
var keys = ["key1","key3","key4"]

var result = keys.map((key) => {
    return colors[key]
})

console.log(result) // 输出结果:["Red", "Green", "Black"]

如果要兼容键名在colors中不存在的场景,避免意外报错,可以使用可选链操作符做安全访问:

var result = keys.map(key => colors?.[key])

不存在的键对应位置会返回undefined,不会阻断代码运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:36:21