【问题标题】:Create new JSON Object List considting of specific Fields from another Object List创建由另一个对象列表中的特定字段组成的新 JSON 对象列表
【发布时间】:2018-11-10 12:05:46
【问题描述】:

如何从另一个 JSON 列表创建仅包含特定对象字段(列(?))的 JSON 列表?

我需要创建一个 JSON 对象列表,其中的字段和新列表的值取自另一个现有列表,其中现有字段是我想要的特定字段。

例如,一个用户将选择一个 CSV 文件,我将数据提取到一个 JSON 列表中(使用 papaparse),这个 CSV 可以有任意数量的列,但我只需要其中的 4 个。这 4 列将始终具有相同的标题名称,当我将数据传递给 JSON 时,它成为字段名称。如何仅使用名为例如字段的整个值创建一个新列表“IdApplication”和“AccountNumber”?

因此,如果我有来自用户的 JSON,例如:

$scope.TestList = [
   {id: 1, name: 'Bob', age: 23, bio: 'Duck Toaster'},
   {id: 2, name: 'Tom', age: 69, bio: 'Banana Sharks'}
];

我怎样才能只取 id 和 age 字段并创建一个新列表,例如:

$scope.NewTestList = [
   {id: 1, age: 23},
   {id: 2, age: 69}
];

我已经查看了 .push() 等用于循环遍历每个对象并添加到新列表,但这似乎只是将新项目添加到数组而不是新对象到数组。理想情况下,不必循环数以万计的列表对象来添加到另一个列表会很好,这是一种理想的批量添加方式。

【问题讨论】:

    标签: javascript angularjs json


    【解决方案1】:

    可以使用数组map()方法;

    $scope.NewTestList = $scope.TestList.map(el => ({
        id: el.id,
      name: el.name
    }));
    

    【讨论】:

    • @Vereonix 注意那里的浏览器支持,旧版本的 IE 不支持 array.map()
    • @Protozoid 如果你的意思是 IE
    • @vicbyte 你说得对,就是一堆 cr*p,但不幸的是,对于卡在非管理员权限的公司 PC 上的用户,有时必须支持它
    • @vicbyte 如何映射名称中包含空格的字段?
    • @Vereonix 使用括号表示法,即。 el['name']
    【解决方案2】:

    您可以遍历$scope.TestList 中的每个对象,并仅在$scope.NewTestList 中推送您想要的内容

    $scope.NewTestList = [];
    angular.forEach($scope.TestList, function (testItem) {
        $scope.NewTestList.push({
            'id': testItem.id,
            'age': testItem.age
        });
    });
    

    【讨论】:

      【解决方案3】:

      你可以试试下面的代码

      let newTestList = TestList.map(obj => {
                           return { id: obj.id, age: obj.age } 
                        }
      

      这将映射到您的数组并返回具有相应属性和值的新数组

      【讨论】:

        【解决方案4】:

        您可以使用 forEach 语法以非常简单的方式进行操作:

        var arr1 = [{ id: 1, name: 'sasa', age: 13 }, 
                    { id: 2, name: 'sfsdasa', age: 21 }, 
                    { id: 3, name: 'dsdssasa', age: 14 }];
        var arr2 = []; // create an empty array
        arr1.forEach(function(arr) {
            arr2.push({id:arr.id,age:arr.age}) // push in the array
        }, this);
        console.log(arr2)
        

        【讨论】:

          猜你喜欢
          • 2021-09-11
          • 2019-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多