在前端数据处理中,数组和 JSON 是最基础的结构化数据载体,掌握其增删操作及核心差异是前端开发的必备能力。本文基于 ECMAScript 规范,拆解 JS 数组删除的 3 种核心方法、JSON 元素增删逻辑,并明确数组与 JSON 的本质区别,所有案例保留原始代码结构,确保实用性与严谨性。
数组删除操作需根据删除位置(开头、结尾、中间)选择对应方法,shift()、pop()适配首尾操作,splice()支持任意位置的精准操作。
shift()会删除原数组首个元素,返回被删除的值;若数组为空则返回undefined。
var chaomao=[1,2,3,4,5]
var chaomao.shift()//得到1
alert(chaomao)//[2,3,4,5]
核心特点:直接修改原数组,仅适用于删除数组开头元素,时间复杂度 O (n)(删除后后续元素需前移)。
pop()删除原数组最后一个元素,返回被删除的值;数组为空时返回undefined。
var chaomao=[1,2,3,4,5]
var chaomao.pop()//得到5
alert(chaomao)//[1,2,3,4]
核心特点:直接修改原数组,仅适用于删除数组结尾元素,时间复杂度 O (1)(无需移动其他元素)。
splice()是数组操作的 “万能方法”,支持任意位置的删除、添加、替换,参数规则为:splice(起始下标, 操作项数, 替换/添加的元素...)。
修改操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,1,8,9)
alert(chaomao)//1,2,8,9,4,5
解析:从下标 2(值为 3 的元素)开始,替换后续 1 项为 8、9,替换项数可与原项数不一致。
删除操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,1)
alert(chaomao)//1,2,4,5
解析:从下标 2 开始,删除后续 1 项,无替换元素即实现删除。
添加操作:
var chaomao=[1,2,3,4,5]
chaomao.splice(2,0,8,9)
alert(chaomao)//1,2,8,9,3,4,5
解析:从下标 2 开始,删除 0 项(仅占位),插入 8、9,实现指定位置添加元素。
JSON 本质是符合特定格式的 JS 对象,其元素增删依赖对象操作语法,核心为delete操作符(删除)和赋值语法(添加)。
delete可删除 JSON 对象指定属性,删除后属性完全从对象中移除。
var p ={
"name": “chaomao”,
"age":45,
"sex":"male"
};
delete p.name
for(var i in p){
console.log(i);//输出age,sex,name项已经被删除了
}
var json = {}; // 如果json已经定义就跳过
json[text] = value;
json.text2 = value2; // 此时text2必须符合变量名标准,否则得使用数组方式赋值
核心区别:
二维数组定义:
var s1=new Array();
var s1=[[3,1],[2,3,4],3,[4,5,6,7,8]];
alert(s1[1][0]);//结果为2
核心特征:通过数字索引访问,元素有序,可存储任意类型数据。
JSON 分为 “JSON 对象” 和 “JSON 字符串”,前者可直接操作,后者需转换后使用。
var status_process = {
" name5" : '闲置期',
"name1" : '播种期',
"name2" : '苗期',
"name3" : '生长期',
"name4" : '采收期'
}
alert(status_process);//结果为:Object:Object
JSON 字符串:需通过eval()转换为对象(后台返回的 JSON 多为此类型):
var s1="{";
var s2 = " 'name5' : '闲置期', 'name1' : '播种期','name2' : '苗期','name3' : '生长期','name4' : '采收期'";
var s3="}";
var status_process=s1+s2 +s3;
JSON 对象使用:
var status_process = {
name5 : '闲置期',
name1 : '播种期',
name2 : '苗期',
name3 : '生长期',
name4 : '采收期'
};
alert(status_process["name5"]);
alert(status_process.name5);
两个都为:闲置期
二维 JSON 对象:
var status_process = {
name5 : '闲置期',
name1 : '播种期',
name2 : '苗期',
name3 : '生长期',
name4 : '采收期'
};
alert(status_process["name5"]);
alert(status_process.name5);
结果都为:'空闲闲置期'
核心特征:通过键名访问,元素无序,键名需为字符串(JSON 规范要求双引号)。
正在加载... ...