如何在JavaScript中列出所有数组?

如何在JavaScript中列出所有数组?,javascript,arrays,Javascript,Arrays,在代码中,我有: house = ["red","blue","yellow"]; car = ["fast","big","safe"]; sofa = ["cozy","modern","elegant"]; 如何计算并列出代码中的所有数组? 比如我有多少个数组? 回答3个数组-房子、汽车、沙发。最简单的方法是将所有数组放在一个对象中 Arrays = { house: ["red","blue","yellow"], cars: ["fast","big","safe"]

在代码中,我有:

house = ["red","blue","yellow"];
car = ["fast","big","safe"];
sofa = ["cozy","modern","elegant"];
如何计算并列出代码中的所有数组? 比如我有多少个数组?
回答3个数组-房子、汽车、沙发。

最简单的方法是将所有数组放在一个对象中

Arrays = {
    house: ["red","blue","yellow"],
    cars: ["fast","big","safe"],
    sofa: ["cozy","modern","elegant"]
}
numberOfArrays = Object.keys(Arrays).length;
sentence = numberOfArrays + ' Arrays - ' + Object.keys(Arrays).join(', ');
在本例中,句子将是3个数组-房子、汽车、沙发

var arrayCount = 0;
for (var property in window) {
    var obj = window[property];
    if (Object.prototype.toString.call( obj ) === '[object Array]')
        arrayCount++;
}

console.log(arrayCount);

编辑:最好不要在窗口对象上这样做,我在JSFIDLE和jsbin上得到了不同的结果。:>

真奇怪。您正在声明所有数组。所以你总是知道答案

但您可以在另一个数组包装器中声明它,如下所示:

var items = [["red","blue","yellow"],
             ["fast","big","safe"],
             ["cozy","modern","elegant"]];

然后,您可以通过访问此包装器items.length来获取数组数。

如果您有一组相关的数组,则应将它们放在对象中,而不是全局命名空间中。然后,您可以调用该对象上的方法来获取所需的有关数组的信息

var MyArrays={ 豪斯:[红,蓝,黄], 车:[快,大,安全], 沙发:[舒适、现代、优雅] }; 函数countArraysobj{ var计数器=0; obj中的forvar键 ifobj[key]数组实例 计数器++; 返回计数器; } 函数getArrayNamesobj{ 变量名称=[]; obj中的forvar键 ifobj[key]数组实例 name.pushkey 返回姓名; }
var info=有+countarraysmyarray+数组:+getArrayNamesMyarray.join 根据您的代码和更少的代码行回答:

var house = ["red","blue","yellow"];
var car = ["fast","big","safe"];
var sofa = ["cozy","modern","elegant"];
var arrayCount = 0;
var arrayString = "";
for (var property in window) {
    if (Array.isArray(window[property])){
        arrayCount++;
        arrayString += arrayCount > 1 ? ", " + property : property;
    }
}
console.log(arrayCount + " arrays - " + arrayString);

检查它是否正在运行

为什么需要这个?如果需要一种动态访问阵列的方法,请使用不同的数据结构,例如阵列对象。或者您想执行静态代码分析,在这种情况下,您需要一个解析器并遍历AST。Victor,我认为您需要解释您要做什么。这将有助于我们提出更好的方法来解决你的实际问题。这就是问题所在:我有一份巴西各州所有大学的名单。差不多每个州有20所大学。当我选择一个州时,一个新的选择将打开该州所有的大学,但它有50个州,我不想输入每个州的名称。然后你必须创建一个不同于你问题中的数据结构。你在问题中提供的信息对潜在的回答者来说不是很有价值。请扩展你的问题,首先用简单的词解释你的实际目标是什么。这绝对是一个正确的答案。他肯定会得到意想不到的结果就是这样,伙计。非常感谢。不要把它标记为正确的。。现在还不对。lolIt在我的示例代码中算对了。是的,但我正在试图弄清楚,如果这些数组旁边有一个var,为什么它不起作用。我已经编写了这些数组。它就像50个数组,每个数组上有20个大学名称。我不会重写代码,我只是想如果我在代码中有它们,应该有一种访问它们的方法。你可以重用这些函数,只传入窗口对象,但如果代码中有任何其他数组,它会计算它们并把一切都搞砸。这就是我们通常避免污染全局名称空间的原因,但正如我所说的countArrayswindow和getArrayNameswindow仍然可以工作;使用,然后只需在开头添加var={和};最后。这大概需要10秒钟,而且会很好地完成。好了,就这样。非常感谢。你能用数组的名称创建一个新数组吗?抱歉,如果有很多问题要问。是的,我刚刚问了:var house=[红、蓝、黄];var car=[快速、大、安全];var沙发=[舒适、现代、优雅];var arrayCount=0;var arraysAR=[];对于窗口中的var属性{if Array.isArraywindow[property]{arrayCount++;arraysAR.pushproperty;}}},正如@foreyez所述,在窗口对象上这样做并不是最好的主意,因为如果您想要为其他不应该被计算的目的添加数组,这将很难做到。