Javascript使用for循环创建具有唯一名称的数组

时间:2013-10-13 23:11:53

标签: javascript arrays

我的手上真的很糟糕,确实很糟糕。

我正在尝试使用具有唯一名称的数组创建一个数组。 问题是我只是覆盖了相同的Eventarrayarray!

  

var Eventarray = new Array(); var Eventarrayarray = new Array();

     

for(var f = 0; f< data.events.event.length; f ++){

if(data.events.event[f].hasOwnProperty('title')) {

  Eventarrayarray["marker"] = marker[f];
  Eventarrayarray["content"] = content[f];
  Eventarrayarray["title"] = data.events.event[f].title;
  Eventarrayarray["description"] = data.events.event[f].description;
  Eventarrayarray["start_time"] = data.events.event[f].start_time;
  Eventarrayarray["venue"] = data.events.event[f].venue_name;
  Eventarrayarray["city"] = data.events.event[f].city;
  Eventarrayarray["state"] = data.events.event[f].state;

  Eventarray[f] = Eventarrayarray;
}
     

}

     

的console.log(Eventarray);

提供什么?!!

2 个答案:

答案 0 :(得分:0)

我还没有听说过doosy,但我认为你需要为每次迭代实例化一个单独的Eventarrayarray数组实例:

for (var f = 0; f < data.events.event.length; f++) {
  if (data.events.event[f].hasOwnProperty('title')) {
    var Eventarrayarray = new Array();

    Eventarrayarray["marker"] = marker[f];
    ...

    Eventarray[f] = Eventarrayarray;
}

编辑:虽然此更改应该解决您最初的问题,但它仍然是一种将元素值分配给数组的非标准方法(读取:Array不能像这样工作)。您似乎打算使用对象:

for (var f = 0; f < data.events.event.length; f++) {
  if (data.events.event[f].hasOwnProperty('title')) {
    Eventarray[f] = {
      marker: marker[f],
      ...
    };
}

答案 1 :(得分:0)

只是评论:

Eventeventarray 应该是一个对象(数组只是具有特殊长度属性的对象,你使用像对象一样的数组而不使用它的任何数组特殊性),这就是我认为你的意思正在努力创造:

eventArray = [
  {
    marker: marker[f],
    content: content[f],
    title: data.events.event[f].title,
    description: data.events.event[f].description,
    start_time: data.events.event[f].start_time,
    venue: data.events.event[f].venue_name,
    city: data.events.event[f].city,
    state: data.events.event[f].state
  }
];

此外,按照惯例,以大写字母开头的变量名称保留给构造函数。尽量保持名称描述内容,而不是结构,因此 events 可能是单个事件对象的数组:

var events = [event, event, ...];