压入整个子数组

Push entire subarray

我有一个格式如下的数组。尝试将满足条件的多个完整子数组(从 A- 开始)推送到新数组并保持数组格式。下面的代码没有成功。

数组:

{"#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"
        }]
    }
}
}

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

var newarray = [];
$.each(array["#VER"], function(i, item) {
if (condition for subarray) {
    newarray.push(i,item);  
} 
});

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

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;
}