以下数据是我的json对象
var column = {
"SNo": [{ "group": "true", "sort": "true", "filter": "true", "type": "number", "min": 1, "max": 1000, "format": "{0:c}"}],
"Name": [{ "group": "true", "sort": "true", "type": "string", "columnmenu": "true"}],
"City": [{ "group": "true", "type": "number", "filter": "true", "width": "100px", "columnmenu": "false"}]
};
我需要将上述数据拆分为数组列表而不进行循环
第一个数组列表:["SNo", "Name", "City"]
第二个数组列表:["group", "sort", "filter", "type", "min", "max", "format", "group", "sort", "type", "columnmenu", "group", "type", "filter", "width", "columnmenu"]
第三个数组:["true", "true", "true", "number", 1, 1000, "{0:c}", "true", "true", "string", "true", "true", "number", "true", "100px", "false"]
第四个数组列表:[7, 4, 5]
//每个属性的计数
请帮帮我。我是这个领域的新手。否则减少最大的no.of循环。
答案 0 :(得分:1)
在这里,当你可以在列对象中拥有更多键时,我也有了一些工作。
var first_array = Object.keys(column);
var second_array = [];
var third_array = [];
var fourth_array = [];
first_array.forEach(function(inner_key){
var keysInInnerKey = Object.keys(column[inner_key][0]);
var valuesInInnerKey = keysInInnerKey.map(function(key){
return column[inner_key][0][key];
});
second_array = second_array.concat(keysInInnerKey);
third_array = third_array.concat(valuesInInnerKey);
fourth_array.push(keysInInnerKey.length);
});
答案 1 :(得分:1)
由于你不知道对象键的值,也许一个返回一组键或值的简单函数可以解决问题。
function getAll(obj, type) {
var arr = [];
for (var key in obj) {
if (type === 'keys') {
arr.push(key);
} else {
arr.push(obj[key]);
}
}
return arr;
}
var one = getAll(column, 'keys');
您可以遍历第一个数组中的元素以填充其余数组:
var two = [];
var three = [];
for (var i = 0, l = one.length; i < l; i++) {
two.push.apply(two, getAll(column[one[i]][0], 'keys'));
three.push.apply(three, getAll(column[one[i]][0], 'values'));
}
答案 2 :(得分:0)
<强> DEMO 强>
第一个阵列:
Object.keys(column)
第二阵列:
Object.keys(column['SNo'][0])
.concat(Object.keys(column['Name'][0]))
.concat(Object.keys(column['City'][0]))
第三阵列:
Object.keys(column['SNo'][0]).map(function(k){return column['SNo'][0][k]})
.concat(Object.keys(column['Name'][0]).map(function(k){return column['Name'][0][k]}))
.concat(Object.keys(column['City'][0]).map(function(k){return column['City'][0][k]}))
Forth array:
Object.keys(column).map(function(k){return Object.keys(column[k][0]).length})
没有循环:)(至少不是for
....)