gpt4 book ai didi

javascript - 将对象上的 for 循环转换为 .map

转载 作者:行者123 更新时间:2023-12-01 01:17:58 24 4
gpt4 key购买 nike

我被告知我的职能:

 for (const key of Object.keys(temp)) {
this.sessionData.push(temp[key]);
}

现在必须使用 .map 来代替,

我已经尝试过以下方法:

Object.keys(temp).map(function(key) {
this.sessionData[key];
})

但是1我不知道它是否真的准确,而且它无法访问其所在函数范围之外的数据,下面是整个函数:

public sessionData;

sessionDates(sessionsData) {
const temp = {};
this.sessionData = [];
sessionsData.forEach(session => {
const date = moment(session.startDatetime).format('DDMMYYYY');
if (temp[date]) {
temp[date].push(session);
} else {
temp[date] = [session];
}
});

Object.keys(temp).map(function(key) {
this.sessionData[key];
})

尝试使用下面的... session 数据未定义,它无法访问范围之外的内容?

    Object.keys(temp).map(function(key) {
this.sessionData[key];
})

但是这有效..

 for (const key of Object.keys(temp)) {
this.sessionData.push(temp[key]);
}

所以这个新的 .map 方法无法访问超出其范围的任何内容..叹息!

如果有人能提供帮助,那就太棒了!谢谢!

最佳答案

在 Javascript 中,所有函数都可以从外部访问变量(称为“更高范围”)——这是该语言的优势之一,称为“捕获”。

您的代码失败的原因是它在 function 声明中使用 this.sessionData,这会出现问题,因为 javascript 中的 this 是...有点复杂。但你不需要它!

您还需要确保返回想要输出的值。我会这样写:

 this.sessionData = Object.keys(temp).map(key => temp[key]);

关于javascript - 将对象上的 for 循环转换为 .map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54556558/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com