JSON对象按值分组
JSON object group by value
我用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));
根据文档$.grep
是用于数组的,巧合的是它也有几个明显的例子。。。您的JSON对象是不是数组,而是对象文字。理想情况下:
{
"1": {"group":"1", "name":"bmw" },
"2": {"group":"1", "name":"audi" },
"3": {"group":"2", "name":"volvo"}
}
你的回复应该是这样的:
{
products: [
{"group":"1", "name":"bmw" },
{"group":"1", "name":"audi" },
{"group":"2", "name":"volvo"}
]
}
然后,只要稍微调整一下,您的示例就会在另一个数组中返回您想要的对象-请注意===
和==
运算符之间的差异,因为在JSON示例中,组以字符串的形式返回,而不是以数字的形式返回。
var group1 = $.grep(all.products, function(el, i){
return el.group == 2;
});
如果您仍然希望使用原始的JSON对象(您不应该这样做,因为它的键似乎是多余的,而且效率有点低),那么您必须设计自己的过滤方法例如:
var group1 = {};
$.each(all, function(i, el){
if(el.group == 2) group1[i] = el;
});
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- php请求带有多个对象json-jquery
- AngularJS,过滤器:如何将一个巨大的对象(JSON)变成一个数组
- 动态属性对象 - JSON
- JavaScript 对象 (JSON) 中的动态设置值
- 从数组查询获取对象 JSON 值时出错
- 使用jQuerygetJSON将多维对象JSON转换为HTML
- 需要从 Angular JS 应用程序中的另一个 JSON 对象数组填充 JSON 数组的每个对象 JSON 对象数组
- 嵌套对象JSON排序JavaScript
- PHP在MySQL中保存来自Javascript的对象"JSON.stringify"通过Ajax
- 将JavaScript对象/ JSON转换为PHP数组
- JSON对象.JSON对象内部
- 访问对象的对象- JSON API
- 数组到对象JSON
- Message":"传入的无效对象(JSON数据格式化问题)