【问题标题】:Cannot read property '######' of undefined无法读取未定义的属性“######”
【发布时间】:2020-10-30 20:28:47
【问题描述】:

我有两个 JSON 数组,$scope.pl$scope.activepage,其中包含值,

 $scope.pl = [{
   pageid: 1,
   page: "regions",
   menudId: 2
  },
  {
   pageid: 2,
   page: "countries",
   menudId: 2
  },
  {
   pageid: 3,
   page: "location",
   menudId: 2
  },
  {
   pageid: 4,
   page: "street",
   menudId: 2
  },
  {
   pageid: 5,
   page: "door",
   menudId: 2
  }
 ]
 $scope.removepl = [{
   pageid: 1,
   page: "regions",
   menuId: 2
  },
  {
   pageid: 1,
   page: "countries",
   menuId: 2
  }
 ]

现在我必须删除 $scope.removepl 的值 这是$scope.pl

 for (var i = 0; i <= $scope.removepl.length; i++) {
  $scope.pagelists = _.filter($scope.pl, function(res) {
   return res.pageid !== $scope.removepl[i].pageid;
  });
  $scope.pl = $scope.pagelists;
 }

现在它可以正常工作了,但我在控制台中遇到错误,例如

无法读取未定义的属性“pageid”

这可能是由 $scope.removepl[i].pageid 我在 for 循环中用于迭代造成的吗?

有人有解决办法吗?

【问题讨论】:

  • 没有pageid,而是id
  • 正如@HarmandeepSinghKalsi 所说,您需要将 .pageid 更改为 .id。您还需要更改i &lt; $scope.removepl.lengthfor 比较,因为您的代码将访问不存在的内存位置
  • @Jon 你有什么解决方案吗,你能不能再次检查我的问题,我现在正确地做出了改变

标签: javascript arrays angularjs multidimensional-array


【解决方案1】:

在这里你可以做这样的事情。我已经尝试使用arr1arr2 进行相应的更改。

来自arr2 的重复项将从arr1 中删除,并将存储在result 变量中

const arr1 = [{
   id: 1,
   page: "regions",
   menudId: 2
  },
  {
   id: 2,
   page: "countries",
   menudId: 2
  },
  {
   id: 3,
   page: "location",
   menudId: 2
  },
  {
   id: 4,
   page: "street",
   menudId: 2
  },
  {
   id: 5,
   page: "door",
   menudId: 2
  }
 ]
 const arr2 = [{
   id: 1,
   page: "regions",
   menuId: 2
  },
  {
   id: 1,
   page: "countries",
   menuId: 2
  }
 ]

var result = arr1.reduce(function (prev, value) {

    var isDuplicate = false;
    for (var i = 0; i < arr2.length; i++) {
        if (value.id == arr2[i].id) {
            isDuplicate = true;
            break;
        }
    }
    
    if (!isDuplicate) {
        prev.push(value);
    }
    
    return prev;
    
}, []);


console.log(result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-06
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多