我有以下代码:jQuery的数组包含File对象
function generateFileArea() {
fileDialog.on('change', function (event) {
console.log('File dialog changed.');
var fileHeaderHTMLElement = $('#file-names-wrapper');
fileHeaderHTMLElement.css('visibility', 'visible');
readOnlyFiles = fileDialog[0].files;//<= File objects
//
for(index = 0; index < readOnlyFiles.length; index++){
if($.inArray(readOnlyFiles[index], files) > -1){ // <== always -1
console.log('This file is already in the array.');
continue;
}
// console.log(jQuery.inArray(readOnlyFiles[index], files));
files.push(readOnlyFiles[index]);
}
console.log(files);
if (files.length == 0)
return;
fileNamesTable.empty();//<= this is a list
for(index = 0; index < files.length; index++) {
createFileButton(files[index]);
}
});
}
我怎样才能让这个在inArray
功能不会每次我核实该文件是重复的时间返回-1
。是否可以比较Array
中的File
对象,以便我可以避免将重复项添加到数组中?
感谢您的回答,这很有道理。我已经在'for'循环中添加了这段代码,但即使文件不同,它仍会向我显示相同的校验和。 'for(index = 0; index
Justplayit
基于这个解释,我的想法是你的散列函数只是比较单词'[File]'而不是试图读取二进制数据。也许将文件的内容存储到数组中会将文件转换为字符串。玩耍一下,尝试获取控制台中显示的一些真实文件数据。如果你能做到这一点,你应该能够把它扔在一个MD5函数没有问题 – 1owk3y
也是我的道歉,我忽视提供给你一个MD5的JS库...但似乎你发现了一个看起来很理想的jQuery插件。总是很高兴看到一个StackOverflow用户实际考虑答案和他们的实现 - 而不是坚持一些代码可以复制粘贴,然后抱怨它没有工作,因为他们没有阅读说明:) – 1owk3y