简体   繁体   English

将两个数组合并为JSON对象

[英]Combine two arrays into an object in JSON

column_names: [
    "School Year Ending",
    "Total Students",
    "American Indian/Alaskan Native: Total",
    "American Indian/Alaskan Native: Male",
    "American Indian/Alaskan Native: Female",
    "Asian/Pacific Islander: Total",
    "Asian/Pacific Islander: Male",
    "Asian/Pacific Islander: Female",
    "Hispanic: Total",
    "Hispanic: Male",
    "Hispanic: Female",
    "Black: Total",
    "Black: Male",
    "Black: Female",
    "White: Total",
    "White: Male",
    "White: Female"
],
data: [
    "2011-12-31",
    3471888,
    39433,
    19926,
    19507,
    182697,
    94104,
    88593,
    686081,
    344910,
    341171,
    536271,
    260720,
    275551,
    1970983,
    1006592,
    964391
]

Is there some way to turn these two JSON arrays into an object format? 有什么方法可以将这两个JSON数组转换为对象格式? For instance: 例如:

"School Year Ending": "2011-12-31",
"Total Students": 3721888,
...

I'd prefer to do this using a lo-dash function for convenience. 为了方便起见,我更喜欢使用lo-dash函数。 Is there something like this? 有这样的东西吗?

_.zipObject(column_names, data);

应该这样做。

Yes. 是。 I believe this will do it in plain JS. 我相信这将在普通JS中完成。

var columns = { };
for (var i in column_names) 
    columns[column_names[i]] = data[i];

JSFiddle JSFiddle

Using vanilla JavaScript - Fiddle 使用香草JavaScript- 小提琴

var column_names = [
    "School Year Ending",
    "Total Students",
    "American Indian/Alaskan Native: Total",
    "American Indian/Alaskan Native: Male",
    "American Indian/Alaskan Native: Female",
    "Asian/Pacific Islander: Total",
    "Asian/Pacific Islander: Male",
    "Asian/Pacific Islander: Female",
    "Hispanic: Total",
    "Hispanic: Male",
    "Hispanic: Female",
    "Black: Total",
    "Black: Male",
    "Black: Female",
    "White: Total",
    "White: Male",
    "White: Female"
],
data = [
    "2011-12-31",
    3471888,
    39433,
    19926,
    19507,
    182697,
    94104,
    88593,
    686081,
    344910,
    341171,
    536271,
    260720,
    275551,
    1970983,
    1006592,
    964391
],
obj = {};

for (var i = 0, l = column_names.length; i < l; i += 1) {
    obj[column_names[i]] = data[i]
}
console.log(obj);

And yet another solutions with vanilla JS! 还有香草JS的另一种解决方案! This uses forEach 这用于forEach

http://jsfiddle.net/w5f36jwd/ http://jsfiddle.net/w5f36jwd/

school_data = {
    column_names:
    [
        "School Year Ending",
        "Total Students",
        "American Indian/Alaskan Native: Total",
        "American Indian/Alaskan Native: Male",
        "American Indian/Alaskan Native: Female",
        "Asian/Pacific Islander: Total",
        "Asian/Pacific Islander: Male",
        "Asian/Pacific Islander: Female",
        "Hispanic: Total",
        "Hispanic: Male",
        "Hispanic: Female",
        "Black: Total",
        "Black: Male",
        "Black: Female",
        "White: Total",
        "White: Male",
        "White: Female"
    ],
    data:
    [
        "2011-12-31",
        3471888,
        39433,
        19926,
        19507,
        182697,
        94104,
        88593,
        686081,
        344910,
        341171,
        536271,
        260720,
        275551,
        1970983,
        1006592,
        964391
    ]
}

var new_object = {};

school_data.column_names.forEach(function(el, index, data_array){
    new_object[el] = school_data.data[index];
});

console.log(new_object);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM