我正在尝试访问数组中的键及其值。您可以从下面的代码中看到将字段名称和fieldValueCleaned插入数组中-这是对传递的信息进行一些清理之后。 我知道fieldNames之一是myKey This,它的值正被推送到数组中(我可以从console.log(fieldName +“:” + fieldValueCleaned);中看到) 但是,当我尝试像itemArray.myKey中一样直接访问该值时,出现“未定义”的情况。 我要去哪里错了
var itemArray = new Array();
var fields = new Array();
var fieldName;
var fieldValue;
var fieldValueCleaned;
for(var i = 0; i < types.length; i++){
fields = types[i].split("=");
fieldName = fields[0];
fieldValue = decodeURIComponent(fields[1]);
fieldValueCleaned = CleanUp(fieldValue);
itemArray.push({[fieldName]: fieldValueCleaned});
console.log(fieldName +" : "+ fieldValueCleaned);
console.log(itemArray.myKey);
}
预先感谢
答案 0 :(得分:0)
您在这里所做的是将对象推入数组,而不设置任何键。您的数组最终看起来像这样:
[
{ myKey: "value" },
{ myOtherKey: "value" }
]
简单地说,数组没有键(*),它具有索引。键是您推送到数组的对象的一部分,而不是数组本身。
您需要的用例是一个普通对象,您可以在其中设置所需的任何键。像这样更改代码:
var itemObject = {};
var fields;
var fieldName;
var fieldValue;
var fieldValueCleaned;
for(var i = 0; i < types.length; i++){
fields = types[i].split("=");
fieldName = fields[0];
fieldValue = decodeURIComponent(fields[1]);
fieldValueCleaned = CleanUp(fieldValue);
itemObject[fieldName] = fieldValueCleaned;
console.log(fieldName +" : "+ fieldValueCleaned);
}
console.log(itemObject.myKey);
*:从技术上讲,数组确实具有键,因为Javascript中的 array 是一种具有特殊语法的对象。但是,数组被设计为与作为整数索引的键一起使用。因此,尽管可以在数组上设置自己的键,但目的不大,我想不出很多用例,数组比普通对象更有意义。