-1

我手上有一个真正的doosy,一个真正的doosy。

我正在尝试使用具有唯一名称的数组的值创建一个数组。问题是我只是覆盖了相同的 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);

是什么赋予了?!!

4

2 回答 2

0

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

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;
}

编辑:尽管此更改应该解决您最初的问题,但它仍然是一种将元素值分配给数组的非标准方式(阅读:AnArray不能那样工作)。您似乎打算改用一个对象:

for (var f = 0; f < data.events.event.length; f++) {
  if (data.events.event[f].hasOwnProperty('title')) {
    Eventarray[f] = {
      marker: marker[f],
      ...
    };
}
于 2013-10-14T00:03:14.013 回答
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
  }
];

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

var events = [event, event, ...];
于 2013-10-14T00:04:51.643 回答