首页 > 解决方案 > jQuery从多维关联数组中切片所有键

问题描述

更新的问题

这是 jQuery 中数组(dataSet)的控制台输出:

[
    {
        "Alias_0":"Toto",
        "Address_1":"Here",
        "Location_0":"Bombay"
    },
    {
        "Alias_0":"Tata",
        "Address_1":"There",
        "Location_0":"Berlin"
    },
    {
        "Alias_0":"Tutu",
        "Address_1":"Somewhere",
        "Location_0":"Brussels"
    }
]

这是我想对其进行改造的方式:

[
    {
        "Alias":"Toto",
        "Address":"Here",
        "Location":"Bombay"
    },
    {
        "Alias":"Tata",
        "Address":"There",
        "Location":"Berlin"
    },
    {
        "Alias":"Tutu",
        "Address":"Somewhere",
        "Location":"Brussels"
    }
]

这是我的尝试:

var dataSet = [
    {"Alias_0": "Toto", "Address_1": "Here",      "Location_0": "Bombay"},
    {"Alias_0": "Tata", "Address_1": "There",     "Location_0": "Berlin"},
    {"Alias_0": "Tutu", "Address_1": "Somewhere", "Location_0": "Brussels"}
];

var result=[];

$.each(dataSet, function(key1,value1){
    result[key1] = new Array();
    $.each(dataSet[key1], function(key2,value2){
        key2=key2.slice(0,-2);          
        result[key1][key2] = new Array();
        result[key1][key2] = value2;
    })
})

console.log(result)

这是我得到的:

[
    [],
    [],
    []
]

这里有什么问题?键和值在控制台中输出时显示预期数据。但是“结果”数组不包括它们。而且,新的数组格式不好([]代替{})

仅供参考:我更愿意从原始数组中删除键的最后一个字符,但由于我无法做到这一点,我正在尝试从原始数组创建第二个数组。但是,如果可以直接转换原始数组而不创建第二个数组,那将是理想的。

总而言之,从数组的每个键中删除两个字符似乎过于复杂。一定有更简单的方法(直接函数?)

谢谢你。

标签: jqueryarrayskeyslice

解决方案


您可以使用.reduce()

var data = [{"black_0": "1", "red_1": "2", "blue_1": "3"}];

var result = Object.keys(data[0]).reduce(function(a, e) {
    a[0][e.replace(/_[01]/, '')] = data[0][e];
    return a;
}, [{}]);
console.log(result);


推荐阅读