推动整个子阵列

时间:2017-10-04 20:44:11

标签: javascript arrays multidimensional-array push

我有一个数组,格式如下。尝试推送多个整个子阵列(以A-开头)满足新阵列的条件并保持阵列格式。以下代码没有成功。

阵列:

struct stat

目前为止的代码,但更改了数组的格式

{"#VER": {
    "A-1": {
        "verdatum": "2016-07-08",
        "vertext": "1073, Almi",
        "trans": [{
            "account": "1510",
            "amount": "52500.00"
        }, {
            "account": "3010",
            "amount": "-42000.00"
        }, {
            "account": "2611",
            "amount": "-10500.00"
        }]
    },
    "A-2": {
        "verdatum": "2016-07-08",
        "vertext": "1074, Text",
        "trans": [{
            "account": "1510",
            "amount": "15000.00"
        }, {
            "account": "3010",
            "amount": "-12000.00"
        }, {
            "account": "2611",
            "amount": "-3000.00"
        }]
    }
}
}

1 个答案:

答案 0 :(得分:1)

您在这里使用的是对象,而不是数组。这段代码应该有效:

var data = { ... };                         // your original data object
var filteredData = filterData(data);

function filterData(data) {
  var verData = data['#VER'];
  var filteredVerData = {};

  $.each(verData, function(key, value) {
    if(value.vertext === '1073, Almi') {    // your condition
      filteredVerData[key] = value;
    }
  });

  return {
    '#VER': filteredVerData
  };
}

但是如果你有很多根键,比如'#VER'你需要过滤所有这些,你需要再写一个循环:

var data = { ... };                         // your original data object
var filteredData = filterData(data);

function filterData(data) {
  var result = {};

  $.each(data, function(verKey, verData) {
    $.each(verData, function(aKey, aData) {
      if(aData.vertext === '1073, Almi') {  // your condition
        result[verKey] = result[verKey] || {};
        result[verKey][aKey] = aData;
      }
    });
  });

  return result;
}