首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按特定顺序从JSON文件解析到JavaScript

按特定顺序从JSON文件解析到JavaScript
EN

Stack Overflow用户
提问于 2014-08-14 18:17:08
回答 2查看 39关注 0票数 0

我的职能如下:

代码语言:javascript
复制
$(document).ready(function() {
    $('#container')
        .TidyTable({
            columnTitles : ['Name','Address','Age'],
            columnValues : [
                ['Dan','Daneroad 1','19'],
                ['Ann','Annroad',''],
            ]
        });
});

我有一个具有以下结构的JSON文件:

代码语言:javascript
复制
{ "results": [
    {
        "address" : "some address1"
        "age"   : "some age1"
        "name"  : "some name1"
    },
    {
        "address" : "some address2"
        "name"  : "some name2"
    }
]}

如您所见,顺序是字母顺序,并不是所有对象都包含相同数量的信息。我可以创建一个数组来替换columnValues,数组的键/值按我想要的顺序排列,如果没有一个键,就用一个空字符串替换它吗?我想数组会像这样

代码语言:javascript
复制
[
  ['some name1', 'some address1', 'some age1'],
  ['some name2', 'some address2', '']
]

我没有在这方面做过那件事,所以请特别感谢:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 18:24:42

假设您已经知道要查找的属性名称(因为我假设它们与列标题匹配),那么只需执行以下操作:

代码语言:javascript
复制
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);

或者,如果您想更简洁,可以在循环的主体中这样做:

代码语言:javascript
复制
array.push([original.results[i].address || "",
           original.results[i].name || "",
           original.results[i].age || ""]);

如果您不知道results中对象的属性,那么它就更棘手了。您可以使用一个for..in循环来循环所有属性,但是订单不会得到保证。

票数 1
EN

Stack Overflow用户

发布于 2014-08-14 18:33:18

你可以在下面使用这个函数..。

代码语言:javascript
复制
   function objToColumnValues(results, headers){

       var values = results.map(function(resultItem){

           var row = [];
           headers.forEach(function(header){
               row.push(resultItem[header] || '' );
           });
           return row;
       });


       return values;
   }

你要用..。

代码语言:javascript
复制
   //in var json is your json-string

   var parsed = JSON.parse(json);
   var colValues = objToColumnValues(parsed.results, ['name', 'address', 'age']);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25314912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档