【问题标题】:Remove Object from "Object of Objects"从“对象的对象”中删除对象
【发布时间】:2017-05-09 08:39:57
【问题描述】:

我有一个包含这样的对象的对象。Object {MAILING ADDRESS: "P O BOX 59", APN: "066-102-11-1"}。现在我需要没有空对象的数据。就像我得到这样的输出 Output

Object {MAILING ADDRESS: "P O BOX 59", APN: "066-102-11-1"}
Object {MAILING ADDRESS: "", APN: ""}
Object {MAILING ADDRESS: "P O BOX 3", APN: "066-105-11-1"}
Object {MAILING ADDRESS: "", APN: ""} 

所以在这种情况下,我不想获得第二个和第四个对象。如果是 100,我不想获得 2,4,6,8..100 索引。因为一次之后的输出是重复的,我必须删除它。 ScreenShot of output I getting

//Code How I am creating this
ExportTool.prototype.click = function(value) {
  var lidtest = mapport.panels.info.current.selection.features.mem;

  if (value != undefined) {
    var lid = lidtest[value].attributes.layer_id;
  } else {
    var lid = lidtest[0].attributes.layer_id;
  }

  if (!lid) return;
  var tbody;
  var thead;
  tbody = $('<tbody></tbody>');
  thead = $('<thead></thead>');
  self = this;

  // Reset
  this.tblHeader = [];
  this.tblData = [];
  this.labelData = [];

  // thead.children().remove();
  // tbody.children().remove();
  //var tbody;

  var layer = mapport.layer(lid);
  var tr = $('<tr></tr>');

  layer.fields.each(function(field) {
    tr.append($('<th ></th>').text(field.name));
    // Table heading for the PDF
    if (self.availableForTable.indexOf(field.name.toUpperCase()) != -1)
      self.tblHeader.push(field.name);
  });

  tbody.append(tr);

  var features = mapport.panels.info.current.features();
  for (var i = 0; i < features.length; ++i) {
    if (features[i].geometry != null) {
      var data = features[i].attributes.data,
        row_data = [],
        row_field, obj_field = {};

      tr = $('<tr></tr>');

      layer.fields.each(function(field) {
        var field_name = field.name.toUpperCase();
        var td = $('<td></td>');
        if (data[field.id] != null) td.text(data[field.id]);
        tr.append(td);

        if (self.availableForTable.indexOf(field_name) != -1) {
          row_field = (data[field.id] != null) ? data[field.id] : '';
          row_data.push(row_field);
          obj_field[field_name] = row_field;
        }
      });

      row_data = row_data.filter(function(entry) {
        return /\S/.test(entry);
      });

      obj_field = JSON.parse(obj_field);
      console.log(obj_field);
      // Table Data for the PDF
      this.tblData.push(row_data);
      // Table Data for the PDF
      this.labelData.push(obj_field);
      tbody.append(tr);
      $('#table_multi_layers').append(tbody);
    }
  }
}

【问题讨论】:

  • 您能否发布完整的数据结构。这看起来更像是一个对象数组。
  • 这是一个对象数组吗?
  • 基础对象如何包含这些对象,它们是在数组中({addresses:[{...},{...}]})还是对象的属性({address1:{...},address2:{...}})?
  • 看起来您正在记录大量对象。使其成为一个数组,然后过滤它们
  • @RoryMcCrossan 像这样创建 obj_field = {};。我展示的这个结果是 console.log(obj_field );

标签: javascript jquery object


【解决方案1】:

您可以像这样使用过滤器选项。您可以将对象更改为数组并应用过滤器。

var someArray = $.map(obj_field, function(value, index) {
    return [value];
});

someArray = [{
    MAILINGADDRESS: "P O BOX 59",
    APN: "066-102-11-1"
  },
  {
    MAILINGADDRESS: "",
    APN: ""
  },
  {
    MAILINGADDRESS: "P O BOX 59",
    APN: "066-102-11-1"
  }, {
    MAILINGADDRESS: "",
    APN: ""
  }
];
result = someArray.filter(function(el) {
  return el.APN !== "";
});

console.log(JSON.stringify(result, null, ' '));

【讨论】:

  • obj_field.filter 不是我得到的错误的函数。因为它不是数组@Shree
  • 什么是 obj_field ??
  • 是包含对象的对象类型。您可以看到我附加的输出快照,它是 console.log(obj_field); 的结果
猜你喜欢
  • 2021-03-11
  • 1970-01-01
  • 2021-08-03
  • 2018-07-30
  • 2021-06-12
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多