Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON数组按子值的值重新排列/或筛选_Javascript_Jquery_Arrays_Json - Fatal编程技术网

Javascript JSON数组按子值的值重新排列/或筛选

Javascript JSON数组按子值的值重新排列/或筛选,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我在从JSON数组中获取信息时遇到了一个问题。 我知道如何检索信息和解析它们。所以这不是问题所在。为了从Facebook获取信息,我们使用JQuery,它做得很好 基本上,我需要重构以下链接的JSON输出: 在标记下,您将看到几个项目。实际上,我需要重新安排整个过程,以便按标签对所有内容进行排序。这意味着: Pauke { [name, source, link], [name, source, link] } Trompete { [name, source, link], [name,

我在从JSON数组中获取信息时遇到了一个问题。 我知道如何检索信息和解析它们。所以这不是问题所在。为了从Facebook获取信息,我们使用JQuery,它做得很好

基本上,我需要重构以下链接的JSON输出:

在标记下,您将看到几个项目。实际上,我需要重新安排整个过程,以便按标签对所有内容进行排序。这意味着:

Pauke    { [name, source, link], [name, source, link] }
Trompete { [name, source, link], [name, source, link] }
显然,正如您所看到的,顶级项目只有一个项目,但一旦有更多的图片,它就会增长

这可能不是正确的数组形式,我接受你的方法


谢谢

好的,所以只需迭代
数据
,然后迭代
数据[i].tags.data
,构建一个结果数组,例如:

var json = {} ; // The json data - this needs to be pre-populated
var result = [] ; // Result Array
var tag ; // Temporary variable for each tag in turn.

for(var i=0;i<json.data.length;i++) {
    if(    typeof json.data[i].tags != 'undefined'
        && typeof json.data[i].tags.data != 'undefined'
    ) {
        for(var j=0;j<json.data[i].tags.data.length;j++) {
            tag = json.data[i].tags.data[j] ;
            if(typeof(tag.name != 'undefined') {
                if(typeof result[tag.name] == 'undefined') result[tag.name] = [] ;
                result[tag.name][result[tag.name].length] = {
                    'name'    : tag.name,
                    'source'  : json.data[i].source,
                    'link'    : json.data[i].link
                } ;
            }
        }
    }
}
var json={};//json数据-这需要预先填充
变量结果=[];//结果数组
变量标记;//依次为每个标记指定临时变量。

对于(var i=0;iOK,只需迭代
data
,然后迭代
data[i].tags.data
,构建一个结果数组,例如:

var json = {} ; // The json data - this needs to be pre-populated
var result = [] ; // Result Array
var tag ; // Temporary variable for each tag in turn.

for(var i=0;i<json.data.length;i++) {
    if(    typeof json.data[i].tags != 'undefined'
        && typeof json.data[i].tags.data != 'undefined'
    ) {
        for(var j=0;j<json.data[i].tags.data.length;j++) {
            tag = json.data[i].tags.data[j] ;
            if(typeof(tag.name != 'undefined') {
                if(typeof result[tag.name] == 'undefined') result[tag.name] = [] ;
                result[tag.name][result[tag.name].length] = {
                    'name'    : tag.name,
                    'source'  : json.data[i].source,
                    'link'    : json.data[i].link
                } ;
            }
        }
    }
}
var json={};//json数据-需要预先填充
var result=[];//结果数组
var tag;//依次为每个标记指定临时变量。

对于(var i=0;ido你只需要重新排列的tags对象还是修改整个json?我需要用tags来构造它。给你一些背景:json数据是一个乐队在facebook上的相册的输出。在每张图片中,你会看到一个乐队成员,根据他们演奏的乐器进行标记。因此,可能会有人演奏超过一个,它会产生多个标记。因此,乐队成员最终需要出现在网页上的多个部分。你只需要重新排列的标记对象还是修改整个json?我需要它由标记构成。给你一些背景:json数据是乐队facebook上相册的输出。在你会看到的每一张图片都是乐队成员,根据他们演奏的乐器进行标记。因此,可能会有人演奏不止一种乐器,这会产生不止一个标记。因此,乐队成员毕竟需要出现在网页上的不止一个部分。