Javascript 将对象循环到另一个对象/数组中
通过一个JSON调用,我得到了这个JSON对象:Javascript 将对象循环到另一个对象/数组中,javascript,jquery,arrays,json,object,Javascript,Jquery,Arrays,Json,Object,通过一个JSON调用,我得到了这个JSON对象: [ { "feeding_id": 14, "supp_name": "Test 1", "supp_weight": 20000, }, { "feeding_id": 14, "supp_name": "Test 2", "supp_weight": 1000, }, { "feeding_i
[
{
"feeding_id": 14,
"supp_name": "Test 1",
"supp_weight": 20000,
},
{
"feeding_id": 14,
"supp_name": "Test 2",
"supp_weight": 1000,
},
{
"feeding_id": 12,
"supp_name": "Test 1",
"supp_weight": 4664,
},
{
"feeding_id": 12,
"supp_name": "Test 2",
"supp_weight": 2332,
}
]
我试图实现的是创建一个如下表:
______________________
| 14 | Test 1 | 20000 |
| | Test 2 | 1000 |
|____|________|_______|
| 12 | Test 1 | 4664 |
| | Test 2 | 2332 |
|____|________|_______|
我更喜欢PHP。因此,我尝试循环该对象并将其放入一个新的对象/数组(在PHP中,$Array[]=Array(…)
)。但我无法在Javascript/jQuery中完成
有人能在路上帮我吗?假设
supp\u name
在每个feed\u id
中是唯一的,您可以使用以下代码(jsonData
表示您的原始JSON数组):
假设
supp\u name
根据feeding\u id
是唯一的,您可以使用以下代码(jsonData
表示原始JSON数组):
您可以通过以下逻辑实现这一点
var arr = [
{
"feeding_id": 14,
"supp_name": "Test 1",
"supp_weight": 20000,
},
{
"feeding_id": 14,
"supp_name": "Test 2",
"supp_weight": 1000,
},
{
"feeding_id": 12,
"supp_name": "Test 1",
"supp_weight": 4664,
},
{
"feeding_id": 12,
"supp_name": "Test 2",
"supp_weight": 2332,
}
];
var obj = {};
// Creating group by feeding_id
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
var id = item.feeding_id;
var resp = {};
if(obj[id] === undefined) {
resp = {
"supp_name" : [item.supp_name],
"supp_weight" : [item.supp_weight]
}
} else {
resp = obj[id];
resp.supp_name.push(item.supp_name);
resp.supp_weight.push(item.supp_weight);
}
obj[id] = resp;
}
// Iterating over feeding_id map
for(var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key);
console.log(obj[key].supp_name);
console.log(obj[key].supp_weight);
}
}
var-arr=[
{
“喂食标识”:14,
“供应商名称”:“测试1”,
“支撑重量”:20000,
},
{
“喂食标识”:14,
“供应商名称”:“测试2”,
“支撑重量”:1000,
},
{
“喂食标识”:12,
“供应商名称”:“测试1”,
“支撑重量”:4664,
},
{
“喂食标识”:12,
“供应商名称”:“测试2”,
“支撑重量”:2332,
}
];
var obj={};
//通过输入组id创建组
对于(变量i=0;i
作为参考-您可以通过以下逻辑实现这一点
var arr = [
{
"feeding_id": 14,
"supp_name": "Test 1",
"supp_weight": 20000,
},
{
"feeding_id": 14,
"supp_name": "Test 2",
"supp_weight": 1000,
},
{
"feeding_id": 12,
"supp_name": "Test 1",
"supp_weight": 4664,
},
{
"feeding_id": 12,
"supp_name": "Test 2",
"supp_weight": 2332,
}
];
var obj = {};
// Creating group by feeding_id
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
var id = item.feeding_id;
var resp = {};
if(obj[id] === undefined) {
resp = {
"supp_name" : [item.supp_name],
"supp_weight" : [item.supp_weight]
}
} else {
resp = obj[id];
resp.supp_name.push(item.supp_name);
resp.supp_weight.push(item.supp_weight);
}
obj[id] = resp;
}
// Iterating over feeding_id map
for(var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key);
console.log(obj[key].supp_name);
console.log(obj[key].supp_weight);
}
}
var-arr=[
{
“喂食标识”:14,
“供应商名称”:“测试1”,
“支撑重量”:20000,
},
{
“喂食标识”:14,
“供应商名称”:“测试2”,
“支撑重量”:1000,
},
{
“喂食标识”:12,
“供应商名称”:“测试1”,
“支撑重量”:4664,
},
{
“喂食标识”:12,
“供应商名称”:“测试2”,
“支撑重量”:2332,
}
];
var obj={};
//通过输入组id创建组
对于(变量i=0;i
供参考-
工作小提琴,以便您可以看到数据格式的变化
工作小提琴,以便您可以看到数据格式的变化
obj=[{
“喂食标识”:14,
“供应商名称”:“测试1”,
“支撑重量”:20000,
}, {
“喂食标识”:14,
“供应商名称”:“测试2”,
“支撑重量”:1000,
}, {
“喂食标识”:12,
“供应商名称”:“测试1”,
“支撑重量”:4664,
}, {
“喂食标识”:12,
“供应商名称”:“测试2”,
“支撑重量”:2332,
}];
$('#content')。追加($(“”);
$.each(对象、功能(i、eachVal){
if($('tr#feeding"+eachVal.feeding(id).length==0){
var$html=$(“”{
'id':'feeding_'+eachVal.feeding_id,
});
$html.append($(“”,{'text':eachVal.feeding_id}));
$html.append($(“”,{'text':eachVal.supp_name}));
$html.append($(“”,{'text':eachVal.supp_name}));
$('content').find('table').append($html);
}否则{
var nameRow=$('tr#feeding'+eachVal.feeding_id).find('td').eq(1);
var weightRow=$('tr#feeding"+eachVal.feeding)id.find('td').eq(2);
html(nameRow.html()+“
”+eachVal.supp\u名称)
html(weightRow.html()+“
”+eachVal.supp\u weight)
}
});代码>
td{
垂直对齐:顶部;
}
表,th,td{
边框:1px纯黑;
}
obj=[{
“喂食标识”:14,
“供应商名称”:“测试1”,
“支撑重量”:20000,
}, {
“喂食标识”:14,
“供应商名称”:“测试2”,
“支撑重量”:1000,
}, {
“喂食标识”:12,
“供应商名称”:“测试1”,
“支撑重量”:4664,
}, {
“喂食标识”:12,
“供应商名称”:“测试2”,
“支撑重量”:2332,
}];
$('#content')。追加($(“”);
$.each(对象、功能(i、eachVal){
if($('tr#feeding"+eachVal.feeding(id).length==0){
var$html=$(“”{
'id':'feeding_'+eachVal.feeding_id,
});
$html.append($(“”,{'text':eachVal.feeding_id}));
$html.append($(“”,{'text':eachVal.supp_name}));
$html.append($(“”,{'text':eachVal.supp_name}));
$('content').find('table').append($html);
}否则{
var nameRow=$('tr#feeding'+eachVal.feeding_id).find('td').eq(1);
var weightRow=$('tr#feeding"+eachVal.feeding)id.find('td').eq(2);
html(nameRow.html()+“
”+eachVal.supp\u名称)
html(weightRow.html()+“
”+eachVal.supp\u weight)
}
});代码>
td{
垂直对齐:顶部;
}
表,th,td{
边框:1px纯黑;
}
让我们假设上面的json数据位于一个名为data的变量中。首先,我们可以将json数据数组转换为可用于创建表的不同对象。然后使用该对象创建表
var obj = {};
for(var i=0;i<data.length;i++){
var test = obj[data[i]["feeding_id"]];
if(!test){
obj[data[i]["feeding_id"]] = [data[i]];
}
else{
obj[data[i]["feeding_id"]].push(data[i]);
}
}
for(key in obj){
for(var j= 0;j<obj[key].length;j++){
var s = $('<tr></tr>');
if(j == 0){
s.prepend('<td rowspan="'+obj[key].length+'">'+key+'</td>');
}
s.append('<td>'+obj[key][j]["supp_name"]+'</td>');
s.append('<td>'+obj[key][j]["supp_weight"]+'</td>');
$('#test1').append(s);
}
};
在此示例中,table1指的是该表的id
var obj = {};
for(var i=0;i<data.length;i++){
var test = obj[data[i]["feeding_id"]];
if(!test){
obj[data[i]["feeding_id"]] = [data[i]];
}
else{
obj[data[i]["feeding_id"]].push(data[i]);
}
}
for(key in obj){
for(var j= 0;j<obj[key].length;j++){
var s = $('<tr></tr>');
if(j == 0){
s.prepend('<td rowspan="'+obj[key].length+'">'+key+'</td>');
}
s.append('<td>'+obj[key][j]["supp_name"]+'</td>');
s.append('<td>'+obj[key][j]["supp_weight"]+'</td>');
$('#test1').append(s);
}
};
var obj={};
对于(var i=0;i让我们假设上面的json数据是