javascript - Excel标签中显示未定义

标签 javascript typescript firebase-realtime-database

问题

它显示在导出的 Excel 文件中undefine。但它没有空数组索引。

代码

const joinDate = new Date(obj.date);
let snap = [
    obj.name,
    obj.surename,
    obj.email,
    obj.nip,
    obj.phone,
    obj.adress + " " + obj.home + " " + (obj.local=="brak" ? "" : obj.local),
    obj.city,
    obj.zip,
    obj.spentPoint,
    '',
    ''
];
orders.push(new Promise((resolve) => {
    let userNip = i;
    let ordersRef = firebase.database().ref('/orders/' + userNip);

    ordersRef.once("value", (snapshot) => {
        let ord = snapshot.val();
        let i = 0;

        for(let u in ord) {
            let o = ord[u];
            let newDate = new Date(o.date);
            let formatttedDate = String(newDate.getDate()) + "/" + String(newDate.getMonth()+1) + "/" + String(newDate.getFullYear());
            snap[10+i] = formatttedDate;
            for(let x in o.items) {
                snap[9+i] += String(o.items[x].title) + "[ Punktów: " + o.items[x].summary + " ]";
            }
            i = i + 2;
        }
        resolve();
    })
}));
data.push(snap);

在 Excel 中看起来像:

name surename ..... 1st product name, 1st product date, undefined2nd product name, 2nd product date.

我不知道它从哪里变得未定义。

数组中有不少数据可以显示undefine。

Screen from excel:

我在问题上画了红线。并且仍在进行 3、4、5 项等...

有什么问题吗?

最佳答案

snap[9+i] 给你undefined。 9有什么用? 10?

如果您要定位 snap 中的特定项目,请始终通过静态索引(如 snap[1]snap[9]<)访问它snap[10]

它会被破坏,因为您要添加 9 + 1 并在没有 11 个项目的数组中查找第 11 个以上的项目。

编辑:

如果您需要维护格式,这不是显示数据的好方法,但可能需要某些外部进程,请尝试以下操作:

const joinDate = new Date(obj.date);
let snap = [
  obj.name,
  obj.surename,
  obj.email,
  obj.nip,
  obj.phone,
  obj.adress + " " + obj.home + " " + (obj.local=="brak" ? "" : obj.local),
  obj.city,
  obj.zip,
  obj.spentPoint,
];

  orders.push(new Promise((resolve) => {
  let userNip = i;
  let ordersRef = firebase.database().ref('/orders/' + userNip);

  ordersRef.once("value", snapshot=>{
    let ord = snapshot.val();

    for(let u in ord){
      let o = ord[u];
      let newDate = new Date(o.date);
      let formatttedDate = String(newDate.getDate()) + "/" + String(newDate.getMonth()+1) + "/" + String(newDate.getFullYear());

      snap.push(formatttedDate);
      for(let x in o.items){
        snap.push(String(o.items[x].title) + "[ Punktów: " + o.items[x].summary + " ]");
      }

    }
    resolve();
  })
}))
data.push(snap);

关于javascript - Excel标签中显示未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46712034/

相关文章:

javascript - 在 intellij 中为 javascript 核心添加 jsdoc

javascript - 使用 Javascript 使用InfiniteScroll 过滤 Firebase 数据集

javascript - 具有动态值的自定义 HTML 属性

javascript - 获取滚动菜单文本以从正常重量太粗到再次正常 onScroll

javascript - 如何将项目存储在 firebase 列表中的特定位置

angularjs - 属性 'filter' 在类型 'FirebaseListObservable' 上不存在

javascript - 尝试从 firebase 获取变量的快照给我一个错误

node.js - 不能在模块 Electron React Typescript 之外使用 import 语句

typescript - TypeScript 中扩展接口(interface)和相交接口(interface)的区别?

node.js - ts-node 导入未在运行时定义