我有以下JavaScript对象:
{
date : 'some date',
name : 'some name'
}
我有10个这样的对象,其中一半对name
- tableA有一个值。而另一半的name
- tableB会有不同的值。
我想将这些对象分解为不同的表格,具体取决于name
的值,我不知道我的对象的name
值。 < / p>
因此对于tableA表中的5个对象:
tableA
---------------
date : 'some date'
date : 'some date'
date : 'some date'
date : 'some date'
date : 'some date'
和tableB
tableB
---------------
date : 'some date'
date : 'some date'
date : 'some date'
date : 'some date'
date : 'some date'
我将使用jQuery来渲染所有这些。我假设我需要像
这样的东西 jQuery.each(objects, function(index, object) {
//build my table
}
我只是不确定完成我想要的逻辑。不是构建我的HTML的实际代码,而是将我的对象分成不同组的逻辑所需的逻辑。我希望这是有道理的。
非常感谢任何建议或建议。
答案 0 :(得分:1)
var data = [{"date":"some date", "name":"tableA"},
{"date":"some date", "name":"tableB"},
{"date":"some date", "name":"tableA"},
{"date":"some data", "name":"tableB"},
{"date":"some data", "name":"tableC"},
{"date":"some data", "name":"tableC"},
{"date":"some data", "name":"Whatever"}];
var table = {};
$.each(data,function(index_data,obj_data){
if(typeof table[obj_data.name] == 'undefined'){//there's the name in obj already?
table[obj_data.name] = [{"date":obj_data.date,"name":obj_data.name}];//if no,then create an array and add the obj
}else{
table[obj_data.name].push({"date":obj_data.date,"name":obj_data.name});//if yes add the obj to array
}
});
这是示例jsfiddle
它将创建table
对象的属性,该属性是name
对象的data
属性,并添加名称属性为data
对象的对象数组与table
对象
答案 1 :(得分:0)
您可以使用JavaScript的精彩功能 - 过滤器。
例如,让我们想象你有多个对象:
var data = [{"date":"date1", "name":"tableA"},
{"date":"date2", "name":"tableB"},
{"date":"date3", "name":"tableA"},
{"date":"date4", "name":"tableB"}];
您可以描述两个功能。 像:
function all_A(el) {
if(el.name == 'tableA') {
return true;
}
}
function all_B(el) {
if(el.name == 'tableB') {
return true;
}
}
如果元素的name属性为&#34; TableA&#34;,函数 all_A 将为每个元素返回true。类似于 all_B 。
然后您只需要在数据阵列上运行过滤器功能。 像那样:
var table_A = data.filter(all_A);
var table_b = data.filter(all_B);
以下是工作示例:) - http://jsfiddle.net/32a97n1b/
答案 2 :(得分:0)
尝试使用以下代码。它将为您提供json对象中的键。
for (data in objArray){
console.log(data);
}
此外,您可以根据您的密钥访问单个元素并过滤它们
答案 3 :(得分:0)
因此,您希望通过&#34; name&#34;将数据分组到单独的列表中。柱:
function group(column){
return function(p,c){
if (!p[c[column]]){
p[c[column]] = [];
}
p[c[column]].push(c);
return p
}
}
data.reduce(group("name"),{});