吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1620|回复: 9
收起左侧

[求助] JS splice分割数组。

[复制链接]
cqwcns 发表于 2019-10-6 23:00
用户上传的CSV其中有一列”操作类型“(DaoRuCaoZuo),JS要根据用户输入对数据进行分组。
JS首先要判断如果”操作类型“为0,就移到”删除“数组vShanChuDiZhi,在判断如果已在数据库,就移到”修改“数组vXiuGaiDiZhi。
代码功能已经实现,问题来了,不知道为什么3个数组的格式不一样(看console输出),如图,不知道什么原因,各位大佬帮忙看看,谢谢。



[JavaScript] 纯文本查看 复制代码
			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[i]['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[i]['DiZhiID'], arrFanHui) > 0) {    //判断如果DiZhiID在数据库已经存在,就添加到修改数组,并在写入数组中删除。
								vXiuGaiDiZhi.push(vXieRuDiZhi.splice(i, 1));
								len--;
								i--;
							};     //if
						};     //for
					});


			//输出分类后数组
			console.log(vXieRuDiZhi);
			console.log(vShanChuDiZhi);
			console.log(vXiuGaiDiZhi);


vvvx.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Ifover 发表于 2019-10-7 00:14
concat()         
mela997 发表于 2019-10-7 06:36
splice()方法会改变原数组的值。
所以你自己打印一下splice前后原数组的值,原数组变了,for循环里用了错误的i
 楼主| cqwcns 发表于 2019-10-7 07:24
 楼主| cqwcns 发表于 2019-10-7 07:24


您好,要是要拆分数组,不是连接数组哦
 楼主| cqwcns 发表于 2019-10-7 07:26
mela997 发表于 2019-10-7 06:36
splice()方法会改变原数组的值。
所以你自己打印一下splice前后原数组的值,原数组变了,for循环里用了错 ...

现在代码实现按操作类型拆分数组没有问题,分类正确。
问题是三个数组的格式不一样看输出图片效果
 楼主| cqwcns 发表于 2019-10-7 07:33
拆分后3个数组的格式不一样,我想全部安装一种格式,帮我看看我的代码出了什么问题,谢谢。

we.png
 楼主| cqwcns 发表于 2019-10-7 07:58
我想我大概知道问题在哪里了,splice() 方法返回值是一个数组。
定义和用法

splice() 方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。

返回值
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。


其实我删除的是一个对象,splice() 方法返回时会外套一个数组。
现在的问题是如何让splice() 方法不是数组,而直接返回删除的内容。各位有没有想法?谢谢。

Ifover 发表于 2019-10-7 10:05
cqwcns 发表于 2019-10-7 07:24
您好,要是要拆分数组,不是连接数组哦

你不是要  [{},{}]
这样子嘛

或者直接用filter
 楼主| cqwcns 发表于 2019-10-7 13:28
离不开好 发表于 2019-10-7 10:05
你不是要  [{},{}]
这样子嘛

filter靠谱,谢谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-27 00:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表