为 angular2 创建管道以迭代 JSON 到数组

Create pipe for angular2 for iterating JSON to array

我正在尝试使用以下 JSON 数据并将其转换为数组,因此我可以 运行 *ngFor='let item of items' 并根据 item.name 显示数据等...

我尝试了以下方法:

var out = [];
for(var key1 in object) {
    out[key1] = key1;
  for(var key2 in object[key1]) {
    for(var key3 in object[key2]) {
        out[key1][key2] = key3;
        }
  }
  console.log(out);
}

但我只是将标题作为键和值。

var object = {
  "compressorClutch": {
    "name": "compressorClutch",
    "param": "Y",
    "register": "64",
    "type": "b"
  },
  "batteryLive": {
    "name": "batteryLive",
    "param": "Y",
    "register": "53",
    "type": "b"
  },
  "batteryGround": {
    "name": "batteryGround",
    "param": "Y",
    "register": "85",
    "type": "b"
  },
  "mainsCable": {
    "name": "mainsCable",
    "param": "N",
    "register": "",
    "type": "b"
  },
  "kcb": {
    "name": "kcb",
    "param": "13",
    "register": "337",
    "type": "i"
  },
  "config": "LorA-F"
}

用Object.keys(object)遍历object的key,会return一个数组,然后用array的map方法遍历这个key数组,return每个json 对象中的项目并将其分配给数组中的一个位置。

const items = Object.keys(object).map( key => object[key] )

如果您想使用 JSONArray,它的格式应该如下所示:

  object = [
    {
      'name': 'compressorClutch',
      'param': 'Y',
      'register': '64',
      'type': 'b'
    },
    {
      'name': 'batteryLive',
      'param': 'Y',
      'register': '53',
      'type': 'b'
    },
    {
      'name': 'batteryGround',
      'param': 'Y',
      'register': '85',
      'type': 'b'
    },
    {
      'name': 'mainsCable',
      'param': 'N',
      'register': '',
      'type': 'b'
    },
    {
      'name': 'kcb',
      'param': '13',
      'register': '337',
      'type': 'i'
    }
  ];

可以在*ngFor中轻松显示数据。作为名称的对象键是多余的,因为您在 JSONObject 中也有一个 'name' 字段。要找到与 'mainCables' 等搜索查询相匹配的正确对象,您可以根据其中一个对象值过滤数组。我希望这可以对你正在尝试做的事情有所帮助。