javascript之数组常用操作

前言

今天做项目,遇到一个需求,在data:_data数据格式里,_data要求是一个json数组;简单的说,我希望_data的数据格式如下:

_data:[
{"name":"国1","icon":"circle"},
{"name":"国2","icon":"circle"},
{"name":"国3","icon":"circle"},
{"name":"国4","icon":"circle"}
]

而我现有的从后台返回的数据是:data=["国1","国2","国3","国4"],这里的data是字符串,不是数组;

解决方案

其实简单的看,就是字符串,数组,json三者之间的格式转换;其中涉及到相关的方法等;总的来说,从理论上来说是可以解决的;

//1.把字符串变成数组
data=JSON.parse(data);
//2.循环遍历,构建新的字符串数组
data=data.map(function(x,y,z){
	return {
	"name":x,
	"icon":"circle
			  }
})

OK,问题解决…
虽然问题简单,但是中途遇到了各种奇葩事情,在此记录并做推论总结

问题记录

1.我们首先看后台返回的数据 data=[“国1”,“国2”,“国3”,“国4”];这里的data是字符串,我在强调一遍;
在这里插入图片描述

这里是我在浏览器中的输出结果,因为在浏览器中,是可以用颜色进行区分的,如果实在心理上不能接受,你可以认为data="[“国1”,“国2”,“国3”,“国4”]";但是由于规范问题以及日后的习惯养成,我建议以浏览器为准;

这个字符串是后台返给我的,但是我接下来,要用这组数组去后台查询新的结果;由于oracle数据库的限制,我们知道,数据库是不能识别双引号的,只能是单引号;
举例:select * from table t where t.name=‘老王’;这里的老王是必须用单引号引起来的
那么问题来了,如何转换呢?下面是我的解决办法:
后台查询需要的格式是:data= ‘国1’,‘国2’,‘国3’,‘国4’ ;

data.replace('[','').replace(']','').replace(/"/g,'\'');

推论总结

其实问题及需求是练手的最好过程,在此将数组的相关操作做简单记录

JavaScript数组常用api:
arr.join("*")---将arr数组的元素以*号串联成字符串,返回字符串类型
arr.push("jack")---向arr数组尾部添加jack元素,返回修改后的数组长度
arr.pop("jack")---移除数组尾部的元素jack,返回移除的元素jack
arr.shift("bob")---移除数组头部元素bob,返回移除的元素bob,如果数组为空,则返回undefined 
arr.unshift("bob")---向数组头部添加元素bob,返回修改后的数组的长度
arr.sort()---排序数组,返回修改后的数组;由于这个是比较的字符串,有所弊端,网上自行搜索解决办法
arr.reverse()---反转数组,返回修改后的数组,原数组改变
arr.concat(1,2,3)---添加1,2,3到原数组中,返回修改后的数组,原数组不变
arr.slice(2,5)---切割数组,从下坐标2到下坐标5的元素组成新的数组,返回新的数组
splice()---这个就牛逼了,增删改查一套全
indexOf()和 lastIndexOf() (ES5新增)---查找元素,没有就返回-1,有就返回对应的下标
reduce()和 reduceRight() (ES5新增)---基本没什么屌用
--------------------------------------------------------------------------------------
arr.forEach() (ES5新增)---无返回值
arr.map() (ES5新增)---返回新数组
arr.filter() (ES5新增)---返回新数组
arr.every() (ES5新增)---返回boolean
arr.some() (ES5新增)---返回boolean


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李卓书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值