如何在javascript中分离数组

如何在javascript中分离数组,javascript,arrays,Javascript,Arrays,我有一个像这样的数组对象 dta: [ { amt: "200000", dat: "2016-10-14 10:41:20 am", grt: "GRT", uid:"example123" }, { amt: "300000", dat: "2016-10-14 10:41:20 am",

我有一个像这样的数组对象

      dta: [
        {
           amt: "200000",
           dat: "2016-10-14 10:41:20 am",
           grt: "GRT",
           uid:"example123"
        },
        {
           amt: "300000",
           dat: "2016-10-14 10:41:20 am",
           grt: "RPD",
           uid:"example123"
        }]
我希望根据
grt:

我尝试了这个方法,但它从1开始创建secong数组索引

function seperate(data) {
console.log(data)
for (var i = 0; i < data.dta.length; i++) {
       if (data.dta[i].grt === 'GRT') {
            owing[i] = data.dta[i];
       } else {
            repaid[i] = data.dta[i];
       }
   }
}
功能分离(数据){
console.log(数据)
对于(var i=0;i
试试:

您当前的解决方案创建了两个数组,每个数组的长度(几乎)等于输入数组,但其中有很多孔。例如,考虑(简化)输入数组如下:

['GRT', 'RPD', 'GRT', 'RPD', 'GRT', 'RPD']
您的解决方案创建了两个如下所示的阵列:

['GRT'    , undefined, 'GRT'    , undefined, 'GRT']
[undefined, 'RPD'    , undefined, 'RPD'    , undefined, 'RPD']
['GRT', 'GRT', 'GRT']
['RPD', 'RPD', 'RPD']
使用
push
创建如下两个数组:

['GRT'    , undefined, 'GRT'    , undefined, 'GRT']
[undefined, 'RPD'    , undefined, 'RPD'    , undefined, 'RPD']
['GRT', 'GRT', 'GRT']
['RPD', 'RPD', 'RPD']

您的代码独立于数组增加索引。因此,无论更新哪个数组,用于两个数组的索引都将递增1

您可以为每个数组使用单独的索引变量,也可以使用如下所示的数组和函数

var owing = [];
var repaid = [];
function seperate(data) {
    data.dta.forEach(function(d) {
        if (d.grt === 'GRT') {
            owing.push(d);
        } else {
            repaid.push(d);
        }
    });
}

使用调试器浏览您的代码,您将很快看到问题所在。可能是重复的不是我的dv,但您可以用更通用的代码替换对“GRT”的检查。