我花时间阅读有关访问对象属性的内容,但无法找到解决问题的方法。
eval()
的情况下访问所有数组的长度?我是通过for
循环和eval("arr" + i + ".length")
完成的。我知道arr1["length"]
有效,但是如何访问所有数组的长度?使用循环?split()
,splice()
或pop()
等函数?arr1 = ["tab1", "tab2"]
,其中tab1, tab2
稍后定义为数组。如果我希望从tab1
访问arr1
的长度,我该怎么办?如果我还想访问数组上定义的函数?答案 0 :(得分:0)
您应该将所有这些数组移动到父object
或array
。
另外,你不应该避免eval
。请参阅Why is using the JavaScript eval function a bad idea?
var arr1 = [1,2];
var arr2 = [1,2,3,4];
var arr3 = [1,2,3];
var arr4 = [1,2,6,4,3,6,];
var arr5 = [1];
var obj = {
array1: arr1,
array2: arr2,
array3: arr3,
array4: arr4,
array5: arr5
}
Object.keys(obj).forEach(function(o){
document.write(obj[o].length + "<br/>");
});
答案 1 :(得分:0)
让我们说我有10个数组,名称为arr1,arr2,arr3 ... arr10。怎么样 我会在不使用eval()的情况下访问所有数组的长度吗? 我用for循环和eval(“arr”+ i +“。length”)完成了它。我知道 arr1 [“length”]有效,但如何访问所有数组的长度? 使用循环?
如果这些数组在函数
中定义如下var arr1 = [];
var arr2 = [];
然后您无法按名称访问它们。
您需要在对象内定义数组。例如
var obj = {
"arr1" : [1,2],
"arr2" : [2,3]
}
如果知道数组名称,可以通过
访问数组console.log(obj.arr1);
或
console.log(obj["arr" + 1 ]); //1 can be replaced by iterating i
但是,如果这些数组是在全局上下文中定义的(在任何函数之外),那么您可以通过window对象访问它们。
window["arr1"]
让我们说arr1 = [“tab1”,“tab2”],其中tab1,tab2稍后定义 作为数组。如果我希望从arr1访问tab1的长度应该如何 我做?如果我还想访问数组上定义的函数?
如果tab1定义为'var tab1 = [];'然后你无法通过名称访问它。
您需要再次将这些数组包装在对象中。
var obj = {"tab1" : []};
然后你可以通过
来访问它console.log(obj[arr1[0]]);
答案 2 :(得分:0)
如果您事先不知道数组的数量,那么数组数组也可以正常工作:
var arrays = [[1,2], [1,2,3,4], [1,2,3], [1,2,6,4,3,6,], [1]];
for (var i = 0; i < arrays.length; i++) {
console.log(arrays[i].length);
document.write('<p>[' + arrays[i] + '].length = ' + arrays[i].length + '</p>');
}