【问题标题】:How to manipulate these values to related column id?如何将这些值操作为相关的列 ID?
【发布时间】:2020-03-28 15:41:09
【问题描述】:

所以我从 REST API 获取这些值。但是,它没有字段。我正在尝试将每个数组中的每个值分配给记录和相应的列。

我如何从后端服务获取数据:

[["name1", null,0]], [["name2", null, 2]], [["name3", null, 1]]

这是我需要的:

{ 类型:空, 姓名:姓名1, 计数:0 } ,

{ 类型:空, 姓名:姓名2, 数量:2 }

{ 类型:空, 姓名:姓名3, 计数:1 }

此外:我尝试将每个值分配给一个字段。我这样做是为了能够通过与列 id 对应的每条记录将这些字段映射到表中。

【问题讨论】:

  • 您可以更改服务中的数据吗?

标签: javascript angularjs typescript


【解决方案1】:

使用地图功能。我假设您返回的数据是一个包含单个“元组”元素的数组,其中元组在位置 0、1 和 2 中具有“名称”、“类型”和“计数”属性的属性。

下面是一个示例,获取您的服务器数据并按照我认为您的要求进行映射。

angular.module('myApp', [])
  .controller('MainController', function MainController() {
    // Your server output
    var serverOutput = [
      [
        ["name1", null, 0]
      ],
      [
        ["name2", null, 2]
      ],
      [
        ["name3", null, 1]
      ]
    ];
    var self = this;

    self.$onInit = function $onInit() {
      self.items = serverOutput.map(function toItemType(serverArr) {
        return {
          type: serverArr[0][1],
          Name: serverArr[0][0],
          Count: serverArr[0][2]
        };
      });
    };
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="MainController as $ctrl">
    <div ng-repeat="item in $ctrl.items" style="margin-bottom: 10px">
      <div>Type: {{::item.type}}</div>
      <div>Name: {{::item.Name}}</div>
      <div>Count: {{::item.Count}}</div>
    </div>
  </div>
</div>

【讨论】:

  • 这不仅仅是 3 个这样的数组,它共有 120 个数组,每个数组有 3 个值,所以我无法手动对其进行编码并将其分配给变量。我订阅了对变量的响应,然后映射正确吗?谢谢你的回答:)
  • 根据您提供的示例,上述内容应适用于任意数量的数组。您能否提供更多详细信息(或更多示例服务器响应),我们可以在其中调整映射功能来满足您的需求。我假设后端服务正在产生带有某种逻辑的输出——我以前没有看到像你这样的响应:)
  • 这实际上帮助我弄清楚了!谢谢!我让它工作了。
【解决方案2】:

希望你一切都好 这是您在 JavaScript 中的解决方案,

     var apiData = [
          [
            ["name1", null, 0]
          ],
          [
            ["name2", null, 2]
          ],
          [
            ["name3", null, 1]
          ]
        ];
    
    
    
    var arryObj = []
    
    apiData.map((a,i)=>arryObj.push({name:a[0][0],type:a[0][1],Count:a[0][2]}))
    
    console.log(arryObj)

【讨论】:

    【解决方案3】:

    您可以将这三个数组放在一个数组中并循环它并创建对象:

    let arr = [[["name1", null,0]], [["name2", null, 2]], [["name3", null, 1]]]
    arr.map(i => {
      const obj = {
        type: i[0][1],
        name: i[0][0],
        count: i[0][2]
      }
      console.log(obj)
    })
    

    工作 JSFiddle here.

    【讨论】:

      【解决方案4】:

      方法很简单

      var apiData = [
                [
                  ["name1", null, 0]
                ],
                [
                  ["name2", null, 2]
                ],
                [
                  ["name3", null, 1]
                ]
              ];
          
          
          
      apiData = apiData.map((a,i)=>({name:a[0][0],type:a[0][1],Count:a[0][2]}))
      
      console.log(apiData)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        • 2021-02-27
        • 2020-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        相关资源
        最近更新 更多