访问数组javascript的成员[zapier]

时间:2019-03-18 10:26:27

标签: javascript zapier

我正在尝试访问数组中的键及其值。您可以从下面的代码中看到将字段名称和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);
}

预先感谢

1 个答案:

答案 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 是一种具有特殊语法的对象。但是,数组被设计为与作为整数索引的键一起使用。因此,尽管可以在数组上设置自己的键,但目的不大,我想不出很多用例,数组比普通对象更有意义。