拆分 AJAX 响应 (JSON)
Split AJAX response (JSON)
如何使用 JS/jQuery 根据属性 'product_range' 将以下 AJAX 响应拆分为三个单独的对象,即一个对象数组用于所有 'range-1' 产品,一个对象数组用于 'range-2' 等等?
[
{
title: "Product 1",
price: "12.00",
product_range: "range-1"
},
{
title: "Product 2",
price: "12.00",
product_range: "range-2"
},
{
title: "Product 3",
price: "12.00",
product_range: "range-3"
}
]
我只会使用 reduce 并将项目推送到包含数组的对象中。
var items = [
{
title: "Product 1",
price: "12.00",
product_range: "range-1"
},
{
title: "Product 2",
price: "12.00",
product_range: "range-2"
},
{
title: "Product 3",
price: "12.00",
product_range: "range-3"
}
];
var grouped = items.reduce( function (obj, item) {
if (!obj[item.product_range]) obj[item.product_range] = [];
obj[item.product_range].push(item);
return obj;
}, {});
console.log(grouped);
console.log(grouped["range-1"]);
使用方法 "filterByProductRange" 按product_range筛选出数据。
var obj = [
{
title: "Product 1",
price: "12.00",
product_range: "range-1"
},
{
title: "Product 2",
price: "12.00",
product_range: "range-2"
},
{
title: "Product 3",
price: "12.00",
product_range: "range-3"
}
];
function filterByProductRange(data, product_range) {
return data.filter(function(item) { return item['product_range'] == product_range; });
}
var range1= filterByProductRange(obj, 'range-1');
console.log(range1);
如果您的意思是按product_range
对数据进行分组,那么:
//json is your json data
var result = {};
for(var i=0; i<json.length;i++)
{
if(result[json[i].product_range] === undefined) result[json[i].product_range] = [];
result[json[i].product_range].push(json[i]);
}
这样的东西应该按范围分组。
var ranged = {};
var data = [{
title: "Product 1",
price: "12.00",
product_range: "range-1"
}, {
title: "Product 2",
price: "12.00",
product_range: "range-2"
}, {
title: "Product 3",
price: "12.00",
product_range: "range-3"
}]
$.each(data, function(i, x) {
if (ranged[x.product_range]) {
ranged[x.product_range].push(x);
} else {
ranged[x.product_range] = [x];
}
});
console.log(JSON.stringify(ranged));
然后,您应该能够通过查询范围对象来检索给定范围的所有对象。
您可以使用
$.map()
来实现类似的结果。
var range1 = new Object(),
range2 = new Object(),
range3 = new Object();
$.map(data, function(d){
if (d.product_range === "range-1") {
for (var i in d) {
range1[i] = d[i];
}
}
});
其中data
是你的对象数组。
这里有一个简单的小提琴来证明这一点。
相关文章:
- 在不同的javascript数组中对json响应进行排序
- Laravel数据表无效的JSON响应
- 使用Backbone.js访问JSON响应的部分
- 不需要的JSON响应
- 跨多个域的json响应
- 将对Ajax PUT的json响应重定向到要由EL解析的JSP中
- handler没有为JSON响应正确填充模板
- 如何在phonegap应用程序中处理Ajax json响应
- 将JSON响应放入var中并输出
- 如何使用AngularJS将if语句conditon与json响应一起使用
- JS-通用解析JSON响应
- 将json响应格式化为父级和子级
- 从 JSON 响应解析数据
- 单个和多个 JSON 响应
- 将日期作为从 Web API 到 angularJS 的 json 响应
- 在 JSX Render for React.js 中遍历 JSON 响应
- 使用 JavaScript 从 URL 获取 JSON 响应
- 使用来自AngularJS的Web API JSON响应-错误:应为和数组,但得到了一个对象
- 生成动态json响应的Javascript
- 如何将json响应的一部分转换为map