Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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 拆分AJAX响应(JSON)_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript 拆分AJAX响应(JSON)

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",

我如何使用JS/jQuery将以下AJAX响应基于属性“product_range”拆分为三个单独的对象,即一个对象数组用于所有“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"
   }
]
使用“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。