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

JS加载JSON生成二维对象按ortho筛选返回空数组如何解决

错误原因

  • Object.entries()误用,做了多余的结构转换
    你可以通过dict[1]直接取到行数据对象,说明dict本身就是存储所有行的数组结构。Object.entries(dict)会把数组转成[[索引, 行对象], [索引, 行对象]...]的二元组数组,此时遍历拿到的word是[索引, 行对象]的数组,自然不存在ortho属性,筛选判断永远为false,返回空数组。
  • 异步请求时序错误
    $.getJSON是异步网络请求,如果你把筛选逻辑写在请求回调的外部,执行筛选代码时请求还没完成,dict还没被赋值,也会导致筛选结果为空。

解决方法

直接去掉多余的Object.entries转换,并且把筛选逻辑放到请求回调内部,保证数据加载完成后再执行筛选即可,代码示例如下:

$.getJSON("file.json", function(arr) {
    const dict = arr;
    // 直接对数组做筛选即可
    const result = dict.filter(word => word.ortho === 'a');
    console.log(result);
});

如果你的dict确实是外层为对象、值才是行数据的结构,调整筛选逻辑取二元组的第二项判断即可:

$.getJSON("file.json", function(arr) {
    const dict = arr;
    const asArray = Object.entries(dict);
    // 取二元组第二项为行对象做判断,最终返回所有匹配的行对象
    const result = asArray.filter(([key, word]) => word.ortho === 'a').map(item => item[1]);
    console.log(result);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:06:03