首页 > 解决方案 > 赋值后重新计算的数组值

问题描述

我正在学习 Angular 并且在这个特定的电话中迷路了。我必须对本地 JSON 文件进行 3 次调用:

    const one$ =this.http
    .get(
        "/assets/files/one.json"
    ).map((res) => res).catch(e => Observable.of(null));


    const two$ =this.http
    .get(
        "/assets/files/two.json"
    ).map((res) => res).catch(e => Observable.of(null));

    const three$ =this.http
    .get(
        "/assets/files/three.json").map((res) => res).catch(e => Observable.of(null));

    forkJoin([one$, two$, three$]).subscribe(results => {
      // results[0] is one
      // results[1] is two
      // results[2] is three
      let Data = null;
      console.log(results);
      //results outputs the following now
       [null, Array(35), Array(35)]

      if (results[0] != null){
        Data = results[0];
      }
      else if (results[1] =! null){
        Data = results[1]; // expected array values here but i get boolean true
      }
      else if (results[2] =! null) {
        Data = results[2]
      }
    });

执行完成后,Data 为 true,而不是数组。请参阅下面的控制台:

在此处输入图像描述

标签: angular

解决方案


你有这个:

else if (results[1] =! null){

你需要的是:

else if (results[1] !== null){

你得到了真的,因为single =是javascript中的赋值,所以你在第一种情况下将!null分配给结果[1],结果为真。您需要一个比较运算符,它要么是 != 要么最好是 !== 因为 !== 是严格的类型比较。但由于这是打字稿/javascript,你真的可以这样做:

else if (results[1]) {

因为它在这种情况下评估为“真实”,而 null 是“虚假”。这是IMO最简单/最干净的方式


推荐阅读