簡體   English   中英

Javascript多維數組

[英]Javascript multiple dimensional array

我有一個數組

[ RowDataPacket { total: 1, deviceName: 'desktop', monthName: 'October' }, RowDataPacket { total: 1045, deviceName: 'desktop', monthName: 'November' }, RowDataPacket { total: 1783, deviceName: 'mobile' , monthName: 'November' }, RowDataPacket { total: 150, deviceName: 'tablet', monthName: 'November' } ]

我正在嘗試創建一個這樣的數組

[
  RowDataPacket {
    total: 0,
    deviceName: 'mobile',
    monthName: 'October'
  },
  RowDataPacket {
    total: 0,
    deviceName: 'tablet',
    monthName: 'October'
  },
  RowDataPacket {
    total: 1,
    deviceName: 'desktop',
    monthName: 'October'
  },
  RowDataPacket {
    total: 1045,
    deviceName: 'desktop',
    monthName: 'November'
  },
  RowDataPacket {
    total: 1783,
    deviceName: 'mobile',
    monthName: 'November'
  },
  RowDataPacket {
    total: 150,
    deviceName: 'tablet',
    monthName: 'November'
  }
]

我嘗試使用以下代碼來創建相同的代碼,但它沒有按預期工作

arr = [];
for (var i = 0; i < arr.length; i++) {
    for (j = 0; j < i; j++) {
        finalarr.push[j] = arr[i];
    }
}

知道如何解決這個問題

正如評論中提到的,你想要的數據結構在 javascript 中是不可能的,但是,這是你能得到的最接近的數據結構。

 let internalObj = { "key1": "value1", "key2": "value2" } let finalArr = []; for (let i = 0; i < 5; i++) { finalArr.push(internalObj); } console.log(finalArr)

stackoverflow 上的結果似乎有點混亂,我建議您在代碼上嘗試一下。

似乎您想在 Javascript 中使用OOP 您需要先定義一個類,然后按如下方式將實例推送到數組中。

class RowDataPacket {
  constructor(data) {
    this.total = data.total
    this.deviceName = data.deviceName
    this.monthName = data.monthName
  }
}

const arr = [];
arr.push(new RowDataPacket({
  total: 0,
  deviceName: 'mobile',
  monthName: 'October'
}));
arr.push(new RowDataPacket({
  total: 0,
  deviceName: 'tablet',
  monthName: 'October'
}));
arr.push(new RowDataPacket({
  total: 1,
  deviceName: 'desktop',
  monthName: 'October'
}));
// push as many as you want.

console.log(arr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM