【问题标题】:How to get name of the array inside of array?如何获取数组内部的数组名称?
【发布时间】:2020-02-15 03:44:44
【问题描述】:

我正在尝试访问循环中其他数组内部的数组名称,但我失败了。如果 fx 不在另一个数组中,我可以访问该数组的名称。 Object.keys({thisObject})[0] 但是当它在另一个数组中时它不起作用。

我已经尝试过每个循环,for 循环。在新数组中嵌套初始化数组:

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]);
    }

}

我想要得到的结果是在表格中列出汽车,其中汽车是标题,下面是保时捷、三菱,然后是自行车。

【问题讨论】:

  • 您将数组存储在数组中。它们没有任何名称,对象属性有名称而不是数组。如果你想要名字然后做类似var vehicles={cars: ["Porshe","Mercedes"], bikes: ["Yamaha","Mitsubishi"]}
  • 好的,所以现在我可以获取数组名称,但是当我尝试对其中的元素进行循环时,它会给我数组名称中的字母数,例如:var vehicles={cars: ["Porshe","Mercedes"], bikes: ["Yamaha","Mitsubishi"]} for( var vehicle in vehicles){ console.log(vehicle) //That is working fine now for( var mark in vehicle){ console.log(mark) //That's returning lenght of the name of the array like 0,1,2,3,4,5 for Porshe } }跨度>
  • 你可以的。 vehicles["cars"].forEach(item =&gt; console.log(item)) 代替“汽车”,您可以放置​​变量。
  • 我已经发布了答案。

标签: javascript jquery arrays loops multidimensional-array


【解决方案1】:
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

【讨论】:

    【解决方案2】:
    for (let i=0;i<vehicles.length;i++){
    
         for(let j = 0; j< vehicles[i].length;j++){
    
             Console.log(vehicles[i][j]); 
    
         }  
    
    }
    

    变量名没有用,当您尝试访问数据时...只有对象存储在数组中,而不是每个变量名。

    【讨论】:

      【解决方案3】:

      这行不通,另一个数组中的数组不是属性,因此没有属性名称。你想要做的是创建一个像这样的对象:

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

      然后你可以遍历对象键,因为现在它是一个对象:

      Object.keys(obj).forEach(key => console.log(key + ' = '+ obj[key]);
      

      【讨论】:

        【解决方案4】:

        给你。

        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
            )};
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-01
          • 2017-12-29
          • 2019-05-01
          • 1970-01-01
          • 2021-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多