javascript - 如何从 JavaScript 中现有的 JSON 对象获取特定的键值?

标签 javascript json

我有一个 JSON 对象,我想创建具有特定键值的 JSON 子集。

JSON 对象

{
    "Checksum": "OK",
    "ID": "012B4567",
    "DOB: "12-12-1991"
    "Data": "Test Line 1 >>>>>↵Test Line 2 >>>>>↵Test Line 3 >>>>>",
    "issue: "11-April-2015",
    "DocID": "PASSPORT",
    "Number: "123456789",
    "Document": "PASSPORT",
    "Photo": "Qk06AAAAAAAAA",
    "ExpiredFlag": false,
    "ExpiryDate": "01 Apr 12",
    "Forename": "IMA Phoney",
    "Image2": "/9j/4AAQSkZJRgABAQEBkAGQAAD/2wBDAAgGBgcGBQgHBwcJCQ",
    "ImageSource1": 0,
    "Image3": "/9j/4AAQSkZJRgABAQEBkAGQAAD/2wBDAAgGBgcGBQgHBwcJCQ",
    "Image1": "/9j/4AAQSkZJRgABAQEBkAGQAAD/2wBDAAgGBgcGBQgHBwcJCQ",
    "IssueState: "USA",
    "Nationality": "USA",
    "PlaceOfBirth": "U.S.A",
    "SecondName": "J",
    "Sex": "Male",
    "Surname": "XYZ"
}

我想要上面的子集,如下所示:

{
"ID": "012B4567",
"Number: "123456789",
"Document": "PASSPORT",
 "IssueState: "USA",
 "Nationality": "USA",
 "PlaceOfBirth": "U.S.A",
 "SecondName": "J",
 "Sex": "Male",
 "Surname": "XYZ"
}

我已经尝试过下面的代码。它工作正常,但我无法理解。我需要最简单的方法:

    var data={
    				"CDRValidation": "CDR Validation test passed",
    				"AirBaudRate": "424",
    				"ChipID": "012B4567",
    				"BACStatus": "TS_SUCCESS",
    				"SACStatus": "TS_NOT_PERFORMED",
    				"Data": "Test Line 1 >>>>>\nTest Line 2 >>>>>\nTest Line 3 >>>>>",
    				"DocType": "PASSPORT",
    				"DocNumber": "123456789",
    				"DocID": "PASSPORT",
    				"Surname": "Person",
    				"Forename": "IMA Phoney",
    				"SecondName": "J",
    				"Nationality"     : "Imaging Automation Demo State",
    				"Sex": "Male",
    				"DOB": "12 May 70",
    				"ExpiryDate": "01 Apr 12",
    				"IssueState": "Passport Agency Billerica",
    				"ExpiredFlag": false,
    				"ImageSource": 0,
    				"OptionalData1": "123456789123456",
            "OptionalData2": "",
            "DateOfIssue":"11 April 02",
            "PlaceOfBirth":"Illinois, U.S.A"
    }

    console.log("----------------->",data);

          var Fields = ({       
            IssueState,
            ExpiryDate,
            DateOfIssue,
            PlaceOfBirth,
            DOB,
            Sex,
            DocNumber,
            DocType
          } = data, {      
            IssueState,
            ExpiryDate,
            DateOfIssue,
            PlaceOfBirth,
            DOB,
            Sex,
            DocNumber,
            DocType
          })
          
          console.log("--------subset--------->",Fields);

最佳答案

有多种方法可以处理这种情况。正如您在示例中所做的那样,对象解构是一种简单的方法。您还可以使用数组来存储所需的键并编写如下代码

function subset(parentObj) {
  const keys = ['key1', 'key2', 'key3'];

  const obj = {};
  for (let i = 0, length = keys.length; i < length; i += 1) {
    obj[keys[i]] = parentObj[keys[i]];
  }

  return obj;
}

或者您也可以使用上面的代码进行一些函数式编程

function subset(parentObj) {
  const keys = ['key1', 'key2', 'key3'];

  return keys.reduce((acc, key) => ({
    ...acc,
    [key]: parentObj[key];
  }), {});
}

关于javascript - 如何从 JavaScript 中现有的 JSON 对象获取特定的键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57955490/

相关文章:

.net - Azure API 应用程序 (.NET Core) 截断了大型 JSON 响应

javascript - 将表单输入值转换为 JSON

JavaScript 四舍五入得到小数点后第二位 0

javascript - 对具有相同 id 的多个元素进行文本验证

javascript - 在日期选择器中选择后禁用日期

Javascript——为什么一个 document.getElementById() 有效,而另一个无效?

javascript - 重构 JSON 对象

Objective-C - 比较不按预期工作的整数

ios - 将 JSON 放入数组

javascript - js中如何定义可变数量的变量?