json对象中缺少对象循环

Missing object loop through json object

本文关键字:对象 循环 json      更新时间:2023-09-26

http://jsfiddle.net/ow9g9y0d/

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"下一次,那里发生了什么?

试试这个

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);

您可以执行类似的操作

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);

试试这个

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);

结果:[{"a":{"id":"3","name":"a"}},{"b":{