Javascript 不使用循环通过键获取对象值
我想将用户上传的INI文件内容传输到一个对象,并将此对象数据与现有数据进行比较。示例INI文件内容如下所示:Javascript 不使用循环通过键获取对象值,javascript,jquery,object,Javascript,Jquery,Object,我想将用户上传的INI文件内容传输到一个对象,并将此对象数据与现有数据进行比较。示例INI文件内容如下所示: Name: Aesthetic Author: Redon CursorCentre: 1 CursorExpand: 0 SliderBallFlip: 0 Combo1: 145,229,103 Combo2: 255,213,128 然而,当我试图获取对象本身时,它正在工作。但当我试图通过键获取值时,它不起作用。在本例中,如何通过键获取值 $(文档).on('change','
Name: Aesthetic
Author: Redon
CursorCentre: 1
CursorExpand: 0
SliderBallFlip: 0
Combo1: 145,229,103
Combo2: 255,213,128
然而,当我试图获取对象本身时,它正在工作。但当我试图通过键获取值时,它不起作用。在本例中,如何通过键获取值
$(文档).on('change','input[name=import]',函数(e){
变量设置={};
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(){
var myText=reader.result;
var myText=myText.split(/\r?\n/);
$.each(myText,function(index,val){
var item=val.split(“:”);
var itemkey=item[0];
var itemval=$.trim(项目[1]);
设置[itemkey]=itemval;
});
}
reader.readAsText(文件);
console.log(设置);//有效
console.log(设置['Author']);//未定义
});代码>
就像@connexo建议的那样:这是一个时间问题。在我稍有改动的版本中,我将两个控制台.log
放在读卡器内.onload
-函数中,它就工作了
$(文档).on('change','input[name=import]',函数(e){
变量设置={};
var file=e.target.files[0];
var reader=new FileReader();
reader.onload=函数(){
var myText=reader.result;
var myText=myText.split(/\r?\n/);
$.each(myText,function(index,val){
var item=val.split(“:”);
var itemkey=item[0];
var itemval=$.trim(项目[1]);
设置[itemkey]=itemval;
});
console.log(设置);//确实有效
console.log(设置['Author']);//也可以!
}
reader.readAsText(文件);
});代码>
我认为这是一个时间问题。您在代码中的什么位置尝试控制台日志记录?在你的阅读器.onload
函数之外,它肯定不起作用。我尝试在change函数的内部和外部都记录,但都不起作用。我还尝试在change函数中定义对象。它也不起作用。请再读一遍^^^^<代码>控制台.log(设置)
在onload功能之外工作。那么为什么console.log(settings[key])
在同一个地方不起作用呢?@philos您在哪里向对象添加属性“Author”?@cars100m谢谢,它起作用了!但它确实让人困惑,我可以在reader.onload
之外检索对象的全部数据,但可以通过键检索特定值。