Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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_Json - Fatal编程技术网

Javascript JSON对象按值分组

Javascript JSON对象按值分组,javascript,jquery,json,Javascript,Jquery,Json,我使用JSON创建了产品数据库: { "1": {"group":"1", "name":"bmw" }, "2": {"group":"1", "name":"audi"}, "3": {"group":"2", "name":"volvo"} } 但现在我需要创建一个HTML下拉列表,其中包含按组id列出的所有元素 我尝试过使用Javascript.grep(),但我没有足够的经验。有什么帮助吗 var all; $.getJSON("data.json", function( data

我使用JSON创建了产品数据库:

{
"1": {"group":"1", "name":"bmw" },
"2": {"group":"1", "name":"audi"},
"3": {"group":"2", "name":"volvo"}
}
但现在我需要创建一个HTML下拉列表,其中包含按组id列出的所有元素

我尝试过使用Javascript
.grep()
,但我没有足够的经验。有什么帮助吗

var all;
$.getJSON("data.json", function( data ) {
    all = data;
});
var group1 = $.grep(all, function(el, i) {
    return el.group. === 2
});
console.log(JSON.stringify(group1));
根据用于阵列的is,巧合的是,它也有几个清晰的示例。。。JSON对象不是数组,而是对象文本。理想情况下,不是这样:

{
“1”:{“集团”:“1”,“名称”:“宝马”},
“2”:{“集团”:“1”,“名称”:“奥迪”},
“3”:{“集团”:“2”,“名称”:“沃尔沃”}
}
您的回复应该与此类似:

{
产品:[
{“集团”:“1”,“名称”:“宝马”},
{“集团”:“1”,“名称”:“奥迪”},
{“集团”:“2”,“名称”:“沃尔沃”}
]
}
然后稍加调整,您的示例将在另一个数组中返回所需的对象-注意和之间的差异,因为在JSON示例中,组将作为字符串返回,而不是作为数字返回

var group1=$.grep(all.products,function(el,i){
返回el.group==2;
});

如果您仍然希望使用原始的JSON对象(您不应该这样做,因为它的键看起来是多余的,并且有点低效),那么您必须设计自己的过滤方法。例如:

var group1={};
$。每个(全部,功能(i,el){
如果(el.group==2)group1[i]=el;
});

展示你对grep的尝试和你想要的输出这可能是一个很好的开始,但在我的案例中没有发现任何有用的东西