首页 > 解决方案 > Angular - Typescript - 试图将多个对象推入一个新的对象数组但未定义?

问题描述

我正在创建一个 Angular 服务来从后端的指定资源中获取数据。此资源将数据行作为流返回,我想将它们存储在一个数组中,以便当我使用此方法调用服务时,我可以访问每个有效负载的数据。我有一种方法来映射数据流,它使用extractRecords下面第二个片段中显示的辅助函数。

getRecords() {
    return this._records = this._resourceService.search(SOMECONSTANT, {})
        .pipe(map(extractRecords))
        .pipe(shareReplay()) as Observable<Data[]>;

我已经调试过,问题是在我推送每个对象数组之后,下面的记录 [] 数组是未定义的r.payload.push

function extractRecords(result) {
    const records = [];

    if (!isNullOrUndefined(result)) {
        result.forEach(r => {
            if (!isNullOrUndefined(r['payload'])) {
                records.push(r.payload);
            }
        });
    }
    return records;
}

r.payload每次循环代码时返回一个对象,并返回一个对象,如下所示:

  name: "Meredith",
  lastname: "Palmer",
  something: "Micheal",
  identifier: "Scott",
  somethingelse: "Rabies",
  blah: "Awareness",
  blue: "ProAm",
  kneecap: "FunRun"

循环将返回 1000 个这样的对象,我想将它们作为对象数组存储在记录数组中,以便我的记录对象看起来像:

  records: [0]
  name: "Meredith",
  lastname: "Palmer",
  something: "Micheal",
  identifier: "Scott",
  somethingelse: "Rabies",
  blah: "Awareness",
  blue: "ProAm",
  kneecap: "FunRun"
[1]

  name: "Meredith",
  lastname: "Palmer",
  something: "Micheal",
  identifier: "Scott",
  somethingelse: "Rabies",
  blah: "Awareness",
  blue: "ProAm",
  kneecap: "FunRun"

标签: javascriptangulartypescript

解决方案


extractRecords() 函数中有两个 if 条件。使用调试器检查代码是否正在进入它们中的每一个,换句话说,在每个 if 下放置一个断点,并查看它是否在两者中都停止。


推荐阅读