var item = {
"slots": [{
"id": "3",
"name": "a"
}, {
"id": "1",
"name": "b"
}, {
"id": "2",
"name": "b"
}]
};
var data = {};
item.slots.forEach(function(i){
if( i["name"] == "b"){
data["b"] = i;
}else{
data["a"] = i;
}
});
console.log(data);
我有两个名称不等于b的项目,但它们只出现在' a'之下,那里发生了什么?
答案 0 :(得分:1)
试试这个
var item = {
"slots": [{
"id": "3",
"name": "a"
}, {
"id": "1",
"name": "b"
}, {
"id": "2",
"name": "b"
}]
};
var data = {}, temp;
item.slots.forEach(function(i){
var temp = data[i["name"]];
if (temp) {
if (!(temp instanceof Array)) {
data[i["name"]] = [temp];
}
data[i["name"]].push(i);
} else {
data[i["name"]] = i;
}
});
console.log(data);
答案 1 :(得分:0)
你可以做这样的事情
var item = {
"slots": [{
"id": "3",
"name": "a"
}, {
"id": "1",
"name": "b"
}, {
"id": "2",
"name": "b"
}, {
"id": "4",
"name": "b"
}]
};
var data = {};
var ctr = 0;
item.slots.forEach(function(i) {
if (i.name == "b") {
(!(data.b == undefined)) ? ctr++ : data.b = {};
data.b["" + ctr] = i;
} else {
data.a = i;
}
});
console.log(data);
document.body.innerHTML = JSON.stringify(data.b);

答案 2 :(得分:0)
试试这个
http://jsfiddle.net/RamVanamali/4611adk0/
var item = {
"slots": [{
"id": "3",
"name": "a"
}, {
"id": "1",
"name": "b"
}, {
"id": "2",
"name": "b"
}]
};
var arr = [];
item.slots.forEach(function (i) {
var data = {};
if (i["name"] == "b") {
data["b"] = i;
} else {
data["a"] = i;
}
arr.push(data);
});
document.body.innerHTML = JSON.stringify(arr);
结果: [{ “一”:{ “ID”: “3”, “名称”: “一个”}},{ “B”:{ “ID”: “1”, “姓名”: “B”}},{ “b”:{ “ID”: “2”, “名称”: “b”}}]