【问题标题】:Editing an object in nested data structure在嵌套数据结构中编辑对象
【发布时间】:2017-09-12 09:24:26
【问题描述】:

我有这样的数据结构:

var fieldTmp= [{
"CountryDetails":[{
    "countryName":"Kerala",
    "JobDetails":[{
        "RequisitionId":"00020447961",
        "City":"KOCHI",
        "PostedDate":"2016-12-18"
        },{
        "RequisitionId":"26103",
        "City":"TRIVANDRUM",
        "PostedDate":"2016-12-12"
        },{
        "RequisitionId":"26077",
        "City":"ALAPPEY",
        "PostedDate":"2016-10-09"
        },{
        "RequisitionId":"00020774701",
        "City":"KOTTAYAM",
        "PostedDate":"2016-06-12"
        },{
        "RequisitionId":"26078",
        "City":"ADOOR",
        "PostedDate":"2016-05-19"}]
    },
    "countryName":"MADRAS",
    "JobDetails":[{
        "RequisitionId":"0025456",
        "City":"CHENNAI",
        "PostedDate":"2017-06-05"
        },{
        "RequisitionId":"69847562",
        "City":"ADYAR",
        "PostedDate":"2016-10-14"}]
    },
    {"countryName":"Tamil Nadu",
    "JobDetails":[{
        "RequisitionId":"00020550501",
        "City":"CHENNAI",
        "PostedDate":"2016-12-18"
        },{
        "RequisitionId":"00020786022",
        "City":"KOVAI",
        "PostedDate":"2016-09-01"
        },{
        "RequisitionId":"00020786071",
        "City":"TRICHY",
        "PostedDate":"2016-04-10"}]
}] }]

我的要求是,我需要将 MADRAS 下的 Job Details 添加到 Tamil Nadu,并且我需要基于一个属性 -PostedDate 对数据进行排序。 所以我的结果应该是这样的,

var fieldTmp= [{
"CountryDetails":[{
    "countryName":"Kerala",
    "JobDetails":[{
        "RequisitionId":"00020447961",
        "City":"KOCHI",
        "PostedDate":"2016-12-18"
        },{
        "RequisitionId":"26103",
        "City":"TRIVANDRUM",
        "PostedDate":"2016-12-12"
        },{
        "RequisitionId":"26077",
        "City":"ALAPPEY",
        "PostedDate":"2016-10-09"
        },{
        "RequisitionId":"00020774701",
        "City":"KOTTAYAM",
        "PostedDate":"2016-06-12"
        },{
        "RequisitionId":"26078",
        "City":"ADOOR",
        "PostedDate":"2016-05-19"}]
    },
    {"countryName":"Tamil Nadu",
    "JobDetails":[{
        "RequisitionId":"0025456",
        "City":"CHENNAI",
        "PostedDate":"2017-06-05"
        },{
        "RequisitionId":"00020550501",
        "City":"CHENNAI",
        "PostedDate":"2016-12-18"
        },{
        "RequisitionId":"69847562",
        "City":"ADYAR",
        "PostedDate":"2016-10-14"
        },{
        "RequisitionId":"00020786022",
        "City":"KOVAI",
        "PostedDate":"2016-09-01"
        },{
        "RequisitionId":"00020786071",
        "City":"TRICHY",
        "PostedDate":"2016-04-10"}]
}] }]

我尝试提取马德拉斯数据并将其添加到泰米尔纳德邦下。但没有任何工作。 我知道如何从 JSON 对象中提取单个或多个值。但我需要编辑该 JSON 并对其进行排序。我能做到。

【问题讨论】:

标签: javascript


【解决方案1】:

我得到了解决方案。 当 countryName 是“Tamil Nadu”和“MADRAS”时,我提取了所有数据并使用以下代码将其保存在一个新数组中。

function mergingBothStateDetails(jsonJobDetails){
for(var j=0;j<jsonJobDetails.length;j++)
{
    newTmpRecord.push({"RequisitionId":jsonJobDetails[j].RequisitionId,
                       "PostedDate":jsonJobDetails[j].PostedDate,
                       "City":jsonJobDetails[j].City});

}

}

这里的newTmpRecord是一个数组,就像通用变量

为了排序,我使用了下面的代码

    function sortNewList(){
    newTmpRecord.sort(function(a, b){ // sort object by retirement date
        var dateA=new Date(a.PostedDate), dateB=new Date(b.PostedDate)
        return dateB-dateA //sort by date descending
    });
}

【讨论】:

    【解决方案2】:

    您可以简单地从数组中提取对象“Madras”,然后在 for 循环中将其所有 Jobdetails 添加到对象“Tamil Nadu”中。您可以通过检查日期来查看将它们添加到循环中的哪个位置,或者您可以编写一个排序函数,这在 javascript 中非常简单,在这里有很好的解释:

    You might want to look up objects

    And here the sorting is explained.

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2019-12-02
      • 1970-01-01
      • 2018-03-10
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2019-10-26
      • 1970-01-01
      相关资源
      最近更新 更多