我的职能如下:
$(document).ready(function() {
$('#container')
.TidyTable({
columnTitles : ['Name','Address','Age'],
columnValues : [
['Dan','Daneroad 1','19'],
['Ann','Annroad',''],
]
});
});我有一个具有以下结构的JSON文件:
{ "results": [
{
"address" : "some address1"
"age" : "some age1"
"name" : "some name1"
},
{
"address" : "some address2"
"name" : "some name2"
}
]}如您所见,顺序是字母顺序,并不是所有对象都包含相同数量的信息。我可以创建一个数组来替换columnValues,数组的键/值按我想要的顺序排列,如果没有一个键,就用一个空字符串替换它吗?我想数组会像这样
[
['some name1', 'some address1', 'some age1'],
['some name2', 'some address2', '']
]我没有在这方面做过那件事,所以请特别感谢:)
发布于 2014-08-14 18:24:42
假设您已经知道要查找的属性名称(因为我假设它们与列标题匹配),那么只需执行以下操作:
var array = [];
for(var i=0; i < original.results.length; i++) {
var subArray = [];
subArray.push(original.results[i].name || "");
subArray.push(original.results[i].address || "");
subArray.push(original.results[i].age || "");
array.push(subArray);
}
console.log(array);或者,如果您想更简洁,可以在循环的主体中这样做:
array.push([original.results[i].address || "",
original.results[i].name || "",
original.results[i].age || ""]);如果您不知道results中对象的属性,那么它就更棘手了。您可以使用一个for..in循环来循环所有属性,但是订单不会得到保证。
发布于 2014-08-14 18:33:18
你可以在下面使用这个函数..。
function objToColumnValues(results, headers){
var values = results.map(function(resultItem){
var row = [];
headers.forEach(function(header){
row.push(resultItem[header] || '' );
});
return row;
});
return values;
}你要用..。
//in var json is your json-string
var parsed = JSON.parse(json);
var colValues = objToColumnValues(parsed.results, ['name', 'address', 'age']);https://stackoverflow.com/questions/25314912
复制相似问题