【问题标题】:How to create array of JSON object from another array using Angular js如何使用Angular js从另一个数组创建JSON对象数组
【发布时间】:2017-10-12 09:25:41
【问题描述】:

大家好,我有以下问题, 我有一个这样的 JSON 对象数组:

$scope.array_one=[

  {
    "field1": "value 1",
    "field2": "value 2",
    "field3": "value 3",
    "field4": "value 4",
    "field5": "value 5",
    "field6": "value 6",
    "field7": "value 7",
    "field8": "value 8"
  },
  {
    "field1": "value 1",
    "field2": "value 2",
    "field3": "value 3",
    "field4": "value 4",
    "field5": "value 5",
    "field6": "value 6",
    "field7": "value 7",
    "field8": "value 8"
  }

  ...
]

我想创建一个新数组(来自 $scope.array_one),它只包含具有 3 个字段的对象

类似这样的:

[

  {

    "field2": "value 2",
    "field3": "value 3",
    "field6": "value 6",
    "field8": "value 8"
  },
  {
    "field2": "value 2",
    "field3": "value 3",
    "field6": "value 6",
    "field8": "value 8"
  }

  ...
]

任何人都可以指导我如何实现这一点,我正在使用 Angular js。

问候!

【问题讨论】:

  • 您自己尝试过什么吗?尝试使用Array.filter 来实现这一点。我觉得应该够了。
  • @ShivenSinha 我只想从 array_one 中提取 field2,field3,field6,field8 ,类似于投影..

标签: javascript angularjs arrays json


【解决方案1】:

你可以用破坏来映射想要的部分。

var $scope = { array_one: [{ field1: "value 1", field2: "value 2", field3: "value 3", field4: "value 4", field5: "value 5", field6: "value 6", field7: "value 7", field8: "value 8" }, { field1: "value 1", field2: "value 2", field3: "value 3", field4: "value 4", field5: "value 5", field6: "value 6", field7: "value 7", field8: "value 8" }] },
    result = $scope.array_one.map(
        ({ field2, field3, field6, field8 }) => ({ field2, field3, field6, field8 })
    );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

【讨论】:

    【解决方案2】:

    使用Array#Map()通过返回一个新对象来创建一个新数组

    let array_one = [
      {
        "field1": "value 1",
        "field2": "value 2",
        "field3": "value 3",
        "field4": "value 4",
        "field5": "value 5",
        "field6": "value 6",
        "field7": "value 7",
        "field8": "value 8"
      },
      {
        "field1": "value 1",
        "field2": "value 2",
        "field3": "value 3",
        "field4": "value 4",
        "field5": "value 5",
        "field6": "value 6",
        "field7": "value 7",
        "field8": "value 8"
      }
    ];
    
    let newArray = array_one.map(f => ({
      field2 : f.field1,
      field3 : f.field3,
      field6 : f.field6,
      field8 : f.field8,
    }));
    
    console.log(newArray);

    【讨论】:

    • 嗨 @Weedoze 我认为这是 Angular 2 的 typeScript 语法,我使用的是 Angular js 1.X!
    • @Ali 答案中提供的代码完全不是打字稿,可以用于 Angular 或 AngularJS。这是纯 ES6
    • 你是对的,它工作得很好,非常感谢你的时间
    猜你喜欢
    • 2021-03-30
    • 2021-12-24
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2021-07-03
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多