开发者问题收集

如何获取 Json 数组中的值并分别使用它们

2017-12-14
145

我有一个 JSON,我想将其中的每个字段分离在数组部分中,然后我想分别使用每个字段并将它们放在单独的数组中。

例如,我的数组中有两部分,我想将第一部分也分为房间 1,将第二部分分为房间 2。

我必须将 Json 发送到我的第二页,格式为房间 1 和房间 2。但我不知道该怎么做

我的 json 现在是这样的:

"rooms": [
    {
      "adultcount": "1",
      "childcount": "1,1"
    },
    {
      "adultcount": "1",
      "childcountandage": "0 "
    }
]

但我想像这样更改它:

"rooms": [
    {
        "rooms1": {
            "adultcount": "1",
            "childcount": "1,1"
        }
    },
    {
        "rooms2": {
            "adultcount": "2",
            "childcount": "10,1"
        }
    }
]

然后我需要使用它们。 我怎样才能用 jquery 做到这一点?

不需要更改 json 代码我只是编写了示例新的 json 来更好地定义。

这是我的代码:

$( document ).ready(function() {
var research={"rooms":[{ "adultcount":"1","childcount":"1,1" },{ "adultcount":"1","childcountandage":"0 " }] }
var adultcount = research.rooms[0].adultcount;
var childcount = research.rooms[0].childcount;

});
3个回答

由于您有一个要制成对象的数组,并且属性名称似乎是数组内的索引,因此您可以使用基本数组.reduce:

var rooms = [
    { "adultcount":"1", "childcount":"1,1" },
    { "adultcount":"2", "childcount":"10,1" }
];

var roomsMap = rooms.reduce( function( map, room, index ) {
    map[ 'room' + ( index + 1 ) ] = room;
    return map;
}, {} );

var otherRoomsMap = rooms.map( function( room, index ) {
    var wrapper = {};
    wrapper[ 'room' + ( index + 1 ) ] = room;
    return wrapper;
} );

console.log( roomsMap );

console.log( otherRoomsMap );

编辑:

我添加了另一个保留数组并将对象包装在另一个对象中的示例,但我不知道这比原始数组有什么优势。

Shilly
2017-12-14

您可以使用循环访问您的 json 数组

$.each(research, function (key, value) {
    var adultcount = value.adultcount;
    var childcount = value.childcount;
    console.log("Adult count is:"+value.adultcount);
    console.log("Child count is:"+value.childcount);
});
Rakesh Yadav
2017-12-14

尝试一下:

var research={"rooms":[{ "adultcount":"1","childcount":"1,1" },{"adultcount":"1","childcountandage":"0 " }] };

var newResearch = {"rooms": []};

research.rooms.forEach(function(r) {
    newResearch.rooms.push({"room1": r[0], "room2": r[1]});
});

console.log(newResearch);
Mirt Hlaj
2017-12-14