Javascript 拆分AJAX响应(JSON)
我如何使用JS/jQuery将以下AJAX响应基于属性“product_range”拆分为三个单独的对象,即一个对象数组用于所有“range-1”产品,一个对象数组用于“range-2”等等Javascript 拆分AJAX响应(JSON),javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我如何使用JS/jQuery将以下AJAX响应基于属性“product_range”拆分为三个单独的对象,即一个对象数组用于所有“range-1”产品,一个对象数组用于“range-2”等等 [ { title: "Product 1", price: "12.00", product_range: "range-1" }, { title: "Product 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"
}
]
使用“filterByProductRange”方法按产品范围过滤数据
var obj=[
{
标题:“产品1”,
价格:“12.00”,
产品范围:“范围-1”
},
{
标题:“产品2”,
价格:“12.00”,
产品范围:“范围-2”
},
{
标题:“产品3”,
价格:“12.00”,
产品范围:“范围-3”
}
];
函数过滤器ByProductRange(数据、产品范围){
返回数据.filter(函数(项){returnitem['product\u range']==product\u range;});
}
var range1=filterByProductRange(对象“范围-1”);
控制台日志(范围1)代码>您可以使用$.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
是对象数组
这里有一个简单的例子来说明这一点。如果您的意思是按产品范围对数据进行分组,那么:
//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]);
}
//json是您的json数据
var result={};
对于(var i=0;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));
然后,您应该能够通过查询范围内的对象来检索给定范围内的所有对象。我只需要使用reduce并将项推送到包含数组的对象中
var项目=[
{
标题:“产品1”,
价格:“12.00”,
产品范围:“范围-1”
},
{
标题:“产品2”,
价格:“12.00”,
产品范围:“范围-2”
},
{
标题:“产品3”,
价格:“12.00”,
产品范围:“范围-3”
}
];
var group=items.reduce(函数(obj,item){
如果(!obj[item.product_range])obj[item.product_range]=[];
obj[项目.产品\范围].推送(项目);
返回obj;
}, {});
控制台日志(分组);
console.log(grouped[“range-1”]);
预期的输出是什么?@Siva填充HTML。我认为您的if
语句中缺少了{
。@Ryan代码非常好。{and}不需要if。