【问题标题】:how to fetch partial data from a json in angular 2如何从角度2的json中获取部分数据
【发布时间】:2018-02-13 12:53:19
【问题描述】:

让我们有一个包含 1000 条记录的 JSON 文件,如下所示

[{
    "name": "aaa",
    "age": 20
}, {
    "name": "bbb",
    "age": 21
}, ......]

有没有办法从 json 中获取部分数据,比如前 100 个对象或任何对象, 如果我点击加载更多按钮,那么我可以从 json 获得另外 100 个对象, 最好在 Angular 2 或任何流行的 javascript 库中? 需要从 JSON 加载部分数据,而不是获取所有数据并获取部分数据 提前致谢

【问题讨论】:

  • 您可以使用 JSON.parse() 将数据放入对象数组中,然后从数组中获取前 x 个项目。
  • 这与 Angular 无关。如果您想从服务器获取 100 个对象,那么无论您在前端使用什么框架,服务器都必须向您发送 100 个对象。
  • no.. 我这里的情况是从 json 加载部分而不是切片我们得到的数据
  • 假设你得到一个尚未解析的响应,你可以获得响应的子字符串,例如获取第 100 个 } 字符之前的字符串并将其解析为 json。下一次,获取从第 101 到第 200 个存在相同 } 字符的子字符串。网上有一些例子是关于获取基于特定字符作为分隔符的子字符串。
  • 如果你想从服务器获取这个,你需要展示你的服务器端逻辑。

标签: javascript jquery json angular


【解决方案1】:

你可以使用 slice 函数,但你应该确保你有一个 json 对象数组。

let startIndex = 0;
let endIndex = 100;

let toBeShowed = yourArray.slice(startIndex ,endIndex);

在下一次点击加载更多按钮时,您将“startIndex,endIndex”增加 100 或任何您想要增加的值。

【讨论】:

  • 目标不是从 1000 个对象开始并对其进行切片,只取前 100 个。目标是一次直接从服务器获取 100 个对象。
  • 你想从服务器获取 100 乘 100 吗??
  • 嗯,是的。那是渐进式加载。您是否认为 Google 会在您每次搜索内容时将 1700 万个对象加载到您的浏览器中,并且只显示第一页?
  • 好的,我完全同意你的看法,那么你的后端语言是什么??
  • Javascript,为什么?
【解决方案2】:

正如我所见,这不能仅通过 FE 侧的角度来完成。你需要从BE方面支持它。喜欢向 BE 发送一定范围的数据,它会返回这个范围的结果。类似于表格上的分页。

firebase example:

citiesRef.where("population", ">", 100000).orderBy("population").limit(2)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 2017-09-13
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多