javascript之数组常用操作

    xiaoxiao2022-06-30  101

    前言

    今天做项目,遇到一个需求,在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

    最新回复(0)