JS splice分割数组。
用户上传的CSV其中有一列”操作类型“(DaoRuCaoZuo),JS要根据用户输入对数据进行分组。JS首先要判断如果”操作类型“为0,就移到”删除“数组vShanChuDiZhi,在判断如果已在数据库,就移到”修改“数组vXiuGaiDiZhi。
代码功能已经实现,问题来了,不知道为什么3个数组的格式不一样(看console输出),如图,不知道什么原因,各位大佬帮忙看看,谢谢。
var vXieRuDiZhi = $tabDiZhiYuLanLieBiao.bootstrapTable('getData'); //获得写入数组
var vShanChuDiZhi = new Array(); //声明删除数组
var vXiuGaiDiZhi = new Array(); //声明修改数组
let len = vXieRuDiZhi.length;;
for (let i = 0; i < len; i++) {
if (vXieRuDiZhi['DaoRuCaoZuo'] == 0) { //判断如果操作类型==0,就添加到删除数组,并在写入数组中删除
vShanChuDiZhi.push(vXieRuDiZhi.splice(i, 1));
len--;
i--;
}; //if
}; //for
$.post("/php/huodeziduanPost.php", { //获得数据库中已有的数据
vBiao: "dizhi",
vZiDuan: "DiZhiID"
},
function (data, status) {
var arrFanHui = JSON.parse(data); //结果数组
let len = vXieRuDiZhi.length;
for (let i = 0; i < len; i++) {
if (jQuery.inArray(vXieRuDiZhi['DiZhiID'], arrFanHui) > 0) { //判断如果DiZhiID在数据库已经存在,就添加到修改数组,并在写入数组中删除。
vXiuGaiDiZhi.push(vXieRuDiZhi.splice(i, 1));
len--;
i--;
}; //if
}; //for
});
//输出分类后数组
console.log(vXieRuDiZhi);
console.log(vShanChuDiZhi);
console.log(vXiuGaiDiZhi);
concat() splice()方法会改变原数组的值。
所以你自己打印一下splice前后原数组的值,原数组变了,for循环里用了错误的i 您好,要是要拆分数组,不是连接数组哦{:301_1004:} 离不开好 发表于 2019-10-7 00:14
concat()
您好,要是要拆分数组,不是连接数组哦{:301_1004:} mela997 发表于 2019-10-7 06:36
splice()方法会改变原数组的值。
所以你自己打印一下splice前后原数组的值,原数组变了,for循环里用了错 ...
现在代码实现按操作类型拆分数组没有问题,分类正确。
问题是三个数组的格式不一样{:301_1004:}看输出图片效果 拆分后3个数组的格式不一样,我想全部安装一种格式,帮我看看我的代码出了什么问题,谢谢。
我想我大概知道问题在哪里了,splice() 方法返回值是一个数组。
定义和用法
splice() 方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
返回值
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
其实我删除的是一个对象,splice() 方法返回时会外套一个数组。
现在的问题是如何让splice() 方法不是数组,而直接返回删除的内容。各位有没有想法?谢谢。
cqwcns 发表于 2019-10-7 07:24
您好,要是要拆分数组,不是连接数组哦
你不是要[{},{}]
这样子嘛
或者直接用filter
离不开好 发表于 2019-10-7 10:05
你不是要[{},{}]
这样子嘛
filter靠谱,谢谢{:301_986:}
页:
[1]