Как получить имя массива внутри массива? - PullRequest
0 голосов
/ 18 октября 2019

Я пытаюсь получить доступ к имени массива внутри другого массива в цикле, но мне не удается. Я могу получить доступ к имени этого массива, если он не внутри другого массива по FX. Object.keys ({thisObject}) [0], но когда он находится внутри другого массива, он не работает.

Я уже пробовал для каждого цикла, для циклов. Вложенные инициализированные массивы в новый массив:

var arr1 = [1,2,3]
var arr2 = [4,5,6]
var arr3 = new Array(arr1,arr2)

Тем не менее, в цикле я не могу получить имя arr1 и arr2. У меня есть возможность получить доступ к их значениям, но не к именам.

var cars = new Array("Porshe","Mercedes");
var bikes = new Array("Yamaha","Mitsubishi");

var vehicles = new Array(cars, bikes);


for (var key in vehicles) {
    var value = vehicles[key];// This is retruning whole array, not the name
    console.log(Object.keys({vehicles[key]})[0]) // That does not work
    vehicles[key].forEach(car => {
        console.log(car)

    });
}


//or

for (let i=0;i<vehicles.length;i++){
    console.log(vehicles[i]); //This is also returning whole array - same method.
    for(let j = 0; j< vehicles[i].car.length;j++){
             console.log(vehicles[i][j]);
    }

}

Результат, который я хочу получить, - перечислить автомобили в таблице, где заголовки «Автомобили» и под ними «Порше», «Мицубиси» итогда велосипеды следующие.

Ответы [ 4 ]

1 голос
/ 18 октября 2019
const map = new Map();
const cars = new Array("Porshe","Mercedes");
const bikes = new Array("Yamaha","Mitsubishi");

map.set('cars', cars); 
map.set('bikes', bikes); 

Вы можете получить их следующим образом:

for(let arrayName of map.keys()) {
    console.log(arrayName);

    for(let item of map.get(arrayName)) {
        console.log(item);    
    }
}

Вывод:

cars
Porshe
Mercedes
bikes
Yamaha
Mitsubishi
0 голосов
/ 18 октября 2019

Вот, пожалуйста.

var vehicles={cars: ["Porshe","Mercedes"], bikes: ["Yamaha","Mitsubishi"]};

for( var vehicle in vehicles){ console.log(vehicle)} // this returns the keys in object i.e. "cars" and "bikes" not the values of array

for( var mark in vehicle){ console.log(mark) // this will loop on "bikes" and "cars"

Чтобы получить значения, которые вам нужно сделать.

for(var type in vehicles) { // will give type of vehicle i.e. "cars" and "bikes"
    vehicles[type].forEach(vehicle => { // will get values for each type and loop over them
        console.log(vehicle); // this will print the values for every car and bike
    )};
}
0 голосов
/ 18 октября 2019

это не сработает, массивы внутри другого массива не являются свойствами и поэтому не имеют свойства propertyName. то, что вы хотите сделать, это создать объект следующим образом:

arr1 = [value1, value2];
arr2 = [value1, value2];
obj = { 'a1': arr1, 'a2': arr2}

, затем вы можете перебирать ключи объекта, потому что теперь это объект:

Object.keys(obj).forEach(key => console.log(key + ' = '+ obj[key]);
0 голосов
/ 18 октября 2019
for (let i=0;i<vehicles.length;i++){

     for(let j = 0; j< vehicles[i].length;j++){

         Console.log(vehicles[i][j]); 

     }  

}

Имена переменных бесполезны, когда вы пытаетесь получить доступ к данным ... в массиве хранится только объект, а не имена переменных, скажем.

...