2016-04-15 191 views
0

我想能够访问一个数组,以便我可以通过手动或使用forEach函数等来循环它。目前,我正在获取一个长度为0的数组,但它确实具有可通过array.name访问的对象。或者,如果我知道如何循环访问,我不介意保留当前的数据结构。这里是我的代码:如何将数组放入数组中?目前我似乎把对象放在数组中?

编辑 - 我应该看看键/值对?

var renameFiles = function renameFiles(files) { 
    var map = []; 
    var reg = /\(\d+\)/; 

    files.filter(function(file) { 

    if(!map[file.replace(reg, '')]) { 
     map[file.replace(reg, '')] = [file]; 
    } else if (!map[file] && !file.match(reg)) { 
     map[file] = [file]; 
    } else if (map[file.replace(reg, '')]) { 
     map[file.replace(reg, '')].push(file); 
    } else { 
     map[file].push(file); 
    } 
    }); 

    return map; 
}; 

f = ['a(1)', 'a(6)', 'a','a','a','b','b(1)','b(4)','c','c(2)']; 
+0

你想达到什么目的?你当前的函数有一个奇数的输出:一个带有键值存储的数组。你想要的东西是: a:[a,a,a,a(1),a(6)], b:[b,b(1),b(4)], c: [c,c(2)] } ? 或者你可能想要一个数组数组。我很难理解什么是renameFiles函数完全是这样(它似乎没有为某些原因重命名) –

+0

输出只是暂时的,重点是重命名所有重复的文件 - 只是有一个关于如何使用关键值... – pauld

回答

0

你可以for(var key in map)Object.keys(map)循环它。这里是一个示例代码:

var map = []; 
map['a'] = '1'; 
map['b'] = '2'; 
map['c'] = '3'; 


console.log(map.length == 0); 

for(var key in map) { 
    console.log('map[' + key +'] = ' + map[key]); 
} 
+0

谢谢!而已! – pauld

+0

只是问,这是否会与“关键字”的工作? –

+0

它不起作用。关键字只能在可迭代对象中使用。以下是解决方法:http://stackoverflow.com/questions/29885220/using-objects-in-for-of-loops。顺便说一句,只适用于IE6中不支持的ES6。 –