javascript - 数组没有填充/映射()正确的反应
问题描述
我正在尝试映射一个数组,但我认为它填错了,因为它为undefined
我添加了一些东西提供了一些东西,但由于undefined
某些原因它们出现了
如果您查看顶部,则顶部是一个单独的数组,其余的将是undefined
如果我尝试使用它们.map()
这张图片来自这里的控制台日志:
{RuuviTag.map((tag) => (
<div key={tag.MAC}>
{console.log(tag.MAC),
console.log(tag)
}
<Marker position={[tag.Latitude.replace(/,/g, '.'), tag.Longitude.replace(/,/g, '.')]} icon={new Icon({
iconUrl: tag.colorIcon,
iconSize: [25, 41],
iconAnchor: [12, 41] })} >
<Popup>
<h1>{tag.MAC}
</h1>
<h1>
</h1>
</Popup>
</Marker>
</div>
))}\
这是我填充数组的代码:
async function getData() {
setLoading(true);
ref.onSnapshot((querySnapshot) => {
let items = [];
querySnapshot.forEach((doc) => {
let item = doc.data()
console.log(doc.data().RawData)
PostRawData(doc.data().RawData).then(function (result) {
console.log(result)
item.decryptedData = result.data;
});
checkBoundaries(doc.data().RawData).then(function (result) {
console.log(result)
item.colorIcon = result;
});
console.log(item)
items.push(item);
console.log(items)
});
但是当我尝试从解密数据中映射 colorIcon 或其他内容时,它会出现undefined
有谁知道如何解决这一问题?我在任何地方都找不到这个问题
解决方案
您应该在完成异步功能后推送项目。
像这样
let item = doc.data()
Promise.all([
PostRawData(doc.data().RawData),
checkBoundaries(doc.data().RawData),
]).then(function (result) {
item.decryptedData = result[0].data;
item.colorIcon = result[1]
items.push(item)
})
推荐阅读
- wordpress - Laravel Nova Corcel 将 Wordpress 术语附加到帖子
- c++ - 如何构建库功能?
- c++ - 使用“this->variable”比只使用“variable”慢
- glsurfaceview - 在线等!android 10+GLSurfaceView+mediaPlayer,可以播放音频,但是不能播放视频,出现如下错误:
- javascript - JavaScript 编译序列如何在这段代码中工作?
- nearprotocol - 链下工作者框架
- python - 如何进行 NxN 矩阵的均值、标准差和众数统计
- powershell - 如何调用多个 Robocopy.exe 命令 AsJobs?
- google-bigquery - BigQuery JavaScript UDF 使用 SQL 查询中的值调用数组
- cube - 过滤 CUBESET