Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组按键索引,值问题_Javascript_Arrays_Oop - Fatal编程技术网

Javascript数组按键索引,值问题

Javascript数组按键索引,值问题,javascript,arrays,oop,Javascript,Arrays,Oop,我有一个存储在键中的数组,请参见值格式: {id: 0, data: mydata} 我还有一个与该ID对应的列表,用于删除文件和删除元素 我遇到的问题是,当使用Javascript拼接函数(从数组中删除对象)时,它会更改索引值 请参见下面的javascript: function setupFileList(file, id){ var list_of_file = document.getElementById("list_of_file"); var name_of_fi

我有一个存储在键中的数组,请参见值格式:

{id: 0, data: mydata}
我还有一个与该ID对应的列表,用于删除文件和删除元素
我遇到的问题是,当使用Javascript拼接函数(从数组中删除对象)时,它会更改索引值

请参见下面的javascript:

function setupFileList(file, id){
    var list_of_file = document.getElementById("list_of_file");
    var name_of_file = file.name;
    var size_of_file = 0;
    var file_reader = new FileReader();
    file_reader.onload = function(e){
        var imgsrc = e.target.result;
        if(file){
            if(file.size > 1024 * 1024)
                size_of_file = (Math.round(file.size * 100 / (1024 * 1024)) / 100).toString() + "MB";
            else
                size_of_file = (Math.round(file.size * 100 / 1024) / 100).toString() + 'KB';
        }

        list_of_file.innerHTML += '<div id="file-'+id+'" class="filesUp"><img class="imgUp" src="' + imgsrc +'" width="100px" height="100px"><div class="progressUp"><span>' + name_of_file + ' / ' + size_of_file +'</span></div><a href="#" onclick="deleteUp(\''+id+'\')">Delete</a></div>';
    };
    file_reader.readAsDataURL(file);
};


function deleteUp(fid){
    var file_query = fileQuery.indexOf({id: fid});
    fileQuery.splice(file_query, 1);
    console.log(file_query);
}
函数设置文件列表(文件,id){
var list_of_file=document.getElementById(“list_of_file”);
var name_of_file=file.name;
_文件的var size_=0;
var file_reader=new FileReader();
file_reader.onload=函数(e){
var imgsrc=e.target.result;
如果(文件){
如果(file.size>1024*1024)
文件的大小=(Math.round(file.size*100/(1024*1024))/100);
其他的
文件的大小=(Math.round(file.size*100/1024)/100).toString();
}
list_of_file.innerHTML+=''+名称_of_file+'/'+大小_of_file+'';
};
文件_reader.readAsDataURL(文件);
};
函数deleteUp(fid){
var file_query=fileQuery.indexOf({id:fid});
拼接(文件查询,1);
console.log(文件查询);
}

如何将对象存储在对象而不是数组中,这样键就固定了

var fileQuery = {
   0: {
      id: 0,
      data: "some data"
   },
   1: {
      id: 1,
      data: "some more data"
   }
};
使用“删除”命令从对象中删除项
例如:

delete fileQuery[0];
另外,
indexOf
不会比较数组中对象的属性,而是比较对象本身的引用。这意味着
array.indexOf
返回作为arg提供的对象的索引,因此
{id:fid}
实际上正在该点创建一个新的唯一对象。不幸的是,
indexOf
将始终返回-1,因为它永远不会在数组中找到新创建的对象


找到要查找的对象索引的最佳方法是手动循环数组,并将所有元素的id属性与fid进行比较。恐怕在这种情况下,
array.indexOf
不起作用。

将对象存储在对象而不是数组中如何,这样键就固定了

var fileQuery = {
   0: {
      id: 0,
      data: "some data"
   },
   1: {
      id: 1,
      data: "some more data"
   }
};
使用“删除”命令从对象中删除项
例如:

delete fileQuery[0];
另外,
indexOf
不会比较数组中对象的属性,而是比较对象本身的引用。这意味着
array.indexOf
返回作为arg提供的对象的索引,因此
{id:fid}
实际上正在该点创建一个新的唯一对象。不幸的是,
indexOf
将始终返回-1,因为它永远不会在数组中找到新创建的对象


找到要查找的对象索引的最佳方法是手动循环数组,并将所有元素的id属性与fid进行比较。恐怕在这种情况下,
array.indexOf
不起作用。

我将考虑更改为使用对象。我在indexOf中没有意识到这一点,所以再次感谢您,我将考虑更改为使用对象。我不知道indexOf有什么问题,所以再次感谢更改索引值有什么问题?更改索引值有什么问题?