我想这样做:
var array=new Array();
//I have an array
//[0]{category:'1',page:'2',row:'3',column:'4',description:'boh',id:'0'};
//[2]{category:'2',page:'2',row:'4',column:'4',description:'bah',id:'2'};
//for cycle for order the original object
object.forEach(function(obj){
问题在于:如何通过对象值设置此多维数组的索引?
array[category][page][row][column] = obj;
}
//then with another cycle
for(var a=0;a<category.length;a++){
for(var b=0;b<page.length;b++){
console.log(array[a][b][c][d].description);
}
}
答案 0 :(得分:1)
you can create multi dimentional array bu this
var myarray=new Array(3)
for (i=0; i <3; i++)
myarray[i]=new Array(5)
答案 1 :(得分:0)
我修好了!
var FunzioniDB = function () {
this.elenco_prodotti = function (callBack) {
var data = [];
var testo_query = 'SELECT cat_varianti,colore_tasto,id,descrizione,prezzo_1, categoria, pagina, posizione FROM prodotti WHERE descrizione!="" AND prezzo_1 !="" AND posizione!="" AND pagina!="" AND categoria!="" ORDER BY posizione ASC,categoria ASC,pagina ASC ;';
var prom = new Promise(function (resolve, reject) {
comanda.sincro.query(testo_query, function (prodotto)
{
//DARE LA CONDIZIONE CHE ESISTA IL PRODOTTO
resolve({prodotto: prodotto});
});
});
data.push(prom);
Promise.all(data).then(function (data) {
/*data.forEach(function (oggetto) {});*/
var array_prodotti = data[0].prodotto;
//struttura oggetto
//prodotto è l'oggetto principale
var prodotti = new Array();
array_prodotti.forEach(function (ar) {
var split = ar['posizione'].split('-');
//console.log(ar);
var riga = split[0];
var colonna = split[1];
if (prodotti[ar.categoria] === undefined)
{
prodotti[ar.categoria] = new Array();
}
if (prodotti[ar.categoria][ar.pagina] === undefined)
{
prodotti[ar.categoria][ar.pagina] = new Array();
}
if (prodotti[ar.categoria][ar.pagina][riga] === undefined)
{
prodotti[ar.categoria][ar.pagina][riga] = new Array();
}
if (prodotti[ar.categoria][ar.pagina][riga][colonna] === undefined)
{
prodotti[ar.categoria][ar.pagina][riga][colonna] = new Object();
prodotti[ar.categoria][ar.pagina][riga][colonna] = ar;
}
});
var output = '';
for (var a in prodotti) {
for (var b in prodotti[a]) {
for (var c = 1; c <= 6; c++) {
for (var d = 1; d <= 8; d++) {
//output += prodotti[a][b][c][d].descrizione + ',';
console.log(a + '-' + b + '-' + c + '-' + d);
if (prodotti[a][b] !== undefined && prodotti[a][b][c] !== undefined &&
prodotti[a][b][c][d] !== undefined)
{
console.log('prod.esist');
output += '*' + prodotti[a][b][c][d].descrizione;
}
}
}
}
}
callBack(output);
});
};
}; });
答案 2 :(得分:0)
您可以执行以下操作(示例中为2维):
var multiArr = [];
yourInputArrOfObjects.forEach(obj => {
if (!multiArr[parseInt(obj.category)]) {
multiArr[parseInt(obj.category)]=[];
}
if (!multiArr[parseInt(obj.category)][parseInt(obj.page)]) {
multiArr[parseInt(obj.category)][parseInt(obj.page)] = obj;
}
});
这将允许您通过
访问第一个对象multiArr[1][2];
请注意,这种方法可以满足您的需求,但会造成很多浪费。或数组或子数组中的空项:数组总是从0开始,所以如果你有例如只有第9页,而multiArr包含数字0-8的空(未定义)条目。
更好的方法是使用过滤器创建一个函数:
function giveMeObjectAtMultiIndex(indexObj) {
var outArr = multiArr.filter(item => {
return (item.category == indexObj.category && item.page == indexObj.page));
}
return outArr[0];
}
获取类别== 1和页面== 2的对象,你可以:
objSought = giveMeObjectAtMultiIndex({category: '1', page: '2'});