提问人:Bachir Messaouri 提问时间:2/16/2019 最后编辑:Bachir Messaouri 更新时间:2/17/2019 访问量:51
jQuery从多维关联数组中切片所有键
jQuery slice all keys from multidimensional associative array
问:
更新的问题
下面是 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)
这是我得到的:
[
[],
[],
[]
]
这里有什么问题? 在控制台中输出时,键和值显示预期数据。但是“result”数组不包括它们。 此外,新的数组格式不好([] 而不是 {})
仅供参考:我更愿意从原始数组中剥离键的最后一个字符,但由于我无法做到这一点,我正在尝试从原始数组创建第二个数组。但是,如果可以直接转换原始数组而不创建第二个数组,那将是理想的。
总而言之,从数组的每个键中剥离两个字符似乎过于复杂。一定有更简单的方法(直函数?
谢谢。
答:
1赞
gaetanoM
2/16/2019
#1
你可以使用 .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);
评论
0赞
Bachir Messaouri
2/16/2019
谢谢gaetanoM。它有效,但现在我的数组中只有一行。此数组馈送一个表,在您的脚本中,该表只有一行。如果我剪切了你脚本中的所有 [0] 索引,那么它就不起作用。
1赞
gaetanoM
2/16/2019
@BachirMessaouri 您可以更新问题,添加数据数组示例吗?谢谢
1赞
Bachir Messaouri
2/16/2019
请参阅更新的问题。基本上,这是您所拥有的,但有很多条目。仅供参考:我不需要区分“_0”和“_1”。我只需要盲目地切掉每个键的最后两个字符。无论如何,它始终是“_0”或“_1”。谢谢。
0赞
Bachir Messaouri
2/17/2019
这不是你想到的更新吗?如果你的意思是别的,请告诉我。谢谢。
0赞
Bachir Messaouri
2/17/2019
#2
终于明白了。
var dataSet = [
{"Alias_0": "Toto", "Address_1": "Here", "Location_0": "Bombay"},
{"Alias_0": "Tata", "Address_1": "There", "Location_0": "Berlin"},
{"Alias_0": "Tutu", "Address_8": "Somewhere", "Location_0": "Brussels"}
];
var sliced_dataSet=[];
for(var i=0;i<dataSet.length;i++){
var obj={};
Object.keys(dataSet[i]).forEach(function(key){
var k = key.substring(0,key.length-2);
obj[k] = dataSet[i][key];
});
sliced_dataSet.push(obj);
}
console.log(arr)
评论