是否可以在javascript/jquery中创建一个空的多维数组?

fin*_*flu 12 javascript arrays jquery flickr multidimensional-array

我正在尝试使用Flickr API创建一个非常基本的Flickr库.我想要实现的是按照标签对照片进行排序.我正在使用的是jQuery.getJSON(),以便我可以解析flickr.photosets.getPhotos的API响应.

我有兴趣从Flickr获取的数据是标签和与每张照片相关联的URL.这个问题的唯一逻辑方法就是创建一个以下格式的多维数组:

Array['tag1'] => ['URL_1', 'URL_2', 'URL_3', 'URL_n'];
Run Code Online (Sandbox Code Playgroud)

但是,我找不到任何方法来实现这一目标.我的代码看起来像这样:

$.getJSON('http://api.flickr.com/services/rest/?api_key=xxx&method=flickr.photosets.getPhotos&user_id=xxx&format=json&extras=tags%2C+url_l%2C+url_sq&nojsoncallback=1&photoset_id=xxx', 
   function(data) {

     var imageArray = [];   
     $.each(data.photoset.photo, function(i, item) {

       imageArray[item.tags] = [item.url_sq,];

     });
});
Run Code Online (Sandbox Code Playgroud)

我知道代码可能看起来很尴尬,但我已经尝试了所有的东西,我无法解决这个问题.

Ray*_*nos 15

var arr = [];
arr[0] = [];
arr[0][0] = [];
arr[0][0][0] = "3 dimentional array"
Run Code Online (Sandbox Code Playgroud)

除非正确使用,否则多维阵列有很多间隙.二维阵列称为矩阵.

我相信您的数据包含一个名为"tags"的空格分隔字符串,其中包含标记和单个URL.

var tagObject = {};
data.photoset.photo.forEach(function(val) {
  val.tags.split(" ").forEach(function(tag) {
    if (!tagObject[tag]) {
      tagObject[tag] = [];
    }
    tagObject[tag].push(val.url_sq);
  });
});
console.log(tagObject); 
/*
  {
    "sea": ["url1", "url2", ...],
    "things": ["url4", ...],
    ...
  }
*/
Run Code Online (Sandbox Code Playgroud)

我不知道它是如何返回多个标签的.