我有一个像这样的数组对象
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];
}
}
}
答案 0 :(得分:0)
您的代码正在增加与数组无关的索引。因此,无论更新哪个数组,您用于两个数组的索引都会增加1.
您可以为每个数组分别使用索引变量,也可以使用数组forEach和push函数,如下所示。
var owing = [];
var repaid = [];
function seperate(data) {
data.dta.forEach(function(d) {
if (d.grt === 'GRT') {
owing.push(d);
} else {
repaid.push(d);
}
});
}
答案 1 :(得分:-1)
尝试:
function seperate(data) {
console.log(data)
for (var i = 0; i < data.dta.length; i++) {
if (data.dta[i].grt === 'GRT') {
owing.push(data.dta[i]);
// console.log(owing[i] + i);
} else {
repaid.push(data.dta[i])
// console.log(repaid[i] + i);
}
}
}
.push
将新元素添加到给定数组的末尾。 Documentation。用法示例:
var a = [1, 2, 3];
a.push(4, 5);
console.log(a); // [1, 2, 3, 4, 5]
您当前的解决方案会创建两个数组,每个数组的长度(几乎)等于输入数组,但其中有很多个洞。例如,考虑(简化)输入数组如下:
['GRT', 'RPD', 'GRT', 'RPD', 'GRT', 'RPD']
您的解决方案会创建两个这样的数组:
['GRT' , undefined, 'GRT' , undefined, 'GRT']
[undefined, 'RPD' , undefined, 'RPD' , undefined, 'RPD']
使用push
代替创建两个这样的数组:
['GRT', 'GRT', 'GRT']
['RPD', 'RPD', 'RPD']