Javascript 棱角;这是未定义的;尝试递增数字变量时,不确定I';我做错了
我基本上是在计算数组中一个对象有两个等于某个值的键的次数。我想在每次满足条件时增加这个数字 如果我使用console.log查看“for”循环的触发次数,则一切正常,一切正常。但是当我试图用这个来做一些事情时,我突然发现了一些未定义的错误,即使我只是想在控制台上阅读它 代码:Javascript 棱角;这是未定义的;尝试递增数字变量时,不确定I';我做错了,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我基本上是在计算数组中一个对象有两个等于某个值的键的次数。我想在每次满足条件时增加这个数字 如果我使用console.log查看“for”循环的触发次数,则一切正常,一切正常。但是当我试图用这个来做一些事情时,我突然发现了一些未定义的错误,即使我只是想在控制台上阅读它 代码: function countAccepted(arr) { for (let i = 0; i < arr.length; i++) { if (arr[i].DeliveryStatus == "Acc
function countAccepted(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].DeliveryStatus == "Accepted" && arr[i].BookingId == "0") {
console.log("poop");
this.multidropAccepted++;
}
}
}
接受的功能计数(arr){
for(设i=0;i
如果您将Angular与typescript一起使用,则不要使用函数
关键字来编写方法。因为它将创建自己的作用域&因此您将无法使用它内部的this
访问类级属性。将方法代码更新为:
countAccepted(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i].DeliveryStatus == "Accepted" && arr[i].BookingId == "0") {
console.log("poop");
this.multidropAccepted++;
}
}
}
countAccepted(arr){
for(设i=0;i
我最后这样写:
let countAccepted = data => {
for (let i = 0; i < data.length; i++) {
if (
data[i].DeliveryStatus == "Accepted" &&
data[i].BookingId == "0"
) {
this.multidropAccepted++;
}
}
};
这就是整个事情的样子:
constructor(
private adalService: AdalService,
private service: DeliveriesService,
private ngRedux: NgRedux<IAppState>
) {
this.service.getSectionAll();
this.sectionAllSubscription = this.sectionAll.subscribe(data => {
let countAccepted = data => {
for (let i = 0; i < data.length; i++) {
if (
data[i].DeliveryStatus == "Accepted" &&
data[i].BookingId == "0"
) {
this.multidropAccepted++;
}
}
};
let countDelivered = data => {
for (let i = 0; i < data.length; i++) {
if (
data[i].DeliveryStatus == "Delivered" &&
data[i].BookingId == "0"
) {
this.multidropDelivered++;
}
}
};
(this.dataSource = new MatTableDataSource(
data.filter(
(value, index, array) =>
!array.filter(
(v, i) => JSON.stringify(value) == JSON.stringify(v) && i < index
).length
)
)),
(this.dataSource.sort = this.sort),
(this.dataSource.paginator = this.paginator),
countAccepted(data);
countDelivered(data);
});
}
构造函数(
私人adalService:adalService,
私人服务:交付服务,
私有ngRedux:ngRedux
) {
this.service.getSectionAll();
this.sectionAllSubscription=this.sectionAll.Subscription(数据=>{
让countAccepted=data=>{
for(设i=0;i{
for(设i=0;i
!array.filter(
(v,i)=>JSON.stringify(value)==JSON.stringify(v)&&i
在哪里调用此函数?可能您在其中执行函数的上下文没有MultiDropAccept变量?在Angular中,您定义了一个函数,如conAccept(arr){…}-no“function before”-并且您必须在声明变量之前-通常在constructor@Eliseo现在我明白了,但是如果是这样的话,那么我需要编写整个函数,在.subscribe中调用它,对吗?我只是试了一下,我没有得到“找不到名称”countaccepted“,如果你想执行你定义的函数,那么就使用这个.myFunction()。“this”是“component”。啊,我明白了,但是我不是在.subscribe外部编写函数,然后在内部调用它,而是在其中编写整个函数?我只是尝试了一下,我从intellisense得到了“找不到名字‘接受计数’”。
constructor(
private adalService: AdalService,
private service: DeliveriesService,
private ngRedux: NgRedux<IAppState>
) {
this.service.getSectionAll();
this.sectionAllSubscription = this.sectionAll.subscribe(data => {
let countAccepted = data => {
for (let i = 0; i < data.length; i++) {
if (
data[i].DeliveryStatus == "Accepted" &&
data[i].BookingId == "0"
) {
this.multidropAccepted++;
}
}
};
let countDelivered = data => {
for (let i = 0; i < data.length; i++) {
if (
data[i].DeliveryStatus == "Delivered" &&
data[i].BookingId == "0"
) {
this.multidropDelivered++;
}
}
};
(this.dataSource = new MatTableDataSource(
data.filter(
(value, index, array) =>
!array.filter(
(v, i) => JSON.stringify(value) == JSON.stringify(v) && i < index
).length
)
)),
(this.dataSource.sort = this.sort),
(this.dataSource.paginator = this.paginator),
countAccepted(data);
countDelivered(data);
});
}