前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组的增删改查操作

数组的增删改查操作

作者头像
全栈程序员站长
发布2022-07-07 19:33:37
4940
发布2022-07-07 19:33:37
举报

大家好,又见面了,我是全栈君。

做批量数据录入时须要对json内的数组进行增删改查操作,splice还是非常强大的记录一下用法。

var lang = [“php”,”java”,”javascript”];

//删除 var removed = lang.splice(2,1); console.log(lang); //php,javascript //console.log(removed); //java ,返回删除的项 //插入 var insert = lang.splice(0,0,”asp”); //从第0个位置開始插入 //alert(insert); //返回空数组 console.log(lang); //asp,php,javascript //替换 var replace = lang.splice(1,1,”c#”,”ruby”); //删除一项,插入两项 //alert(lang); //asp,c#,ruby

console.log(replace); //php,返回删除的项

另外,json多项的增删改查也贴上。备用:

/** * Json对象操作,增删改查 * * @author lellansin * @blog www.lellansin.com * @version 0.1 * * 解决一些常见的问题 * get/set 解决获取和设置时。无节点中断的问题 * create 能够创建多级节点,若存在则覆盖新值 * delete 删除节点及其子节点 * print_r 格式化输出对象(调试用) * 实例见底部 */

function Json() {

}

/** * 获取Json对象中的某个节点 * 比如:json.get(Data, ‘country’, ‘province’, ‘city’); * 结果则返回 Data[‘country’][‘province’][‘city’] * 无则返回false */ Json.prototype.get = function(obj, key) { var args = this.get.arguments; var result = obj;

for (var i = 1; i < args.length; i++) { result = result[args[i]]; if (result === undefined) { return false; }; }; return result; };

/** * 设置Json对象中的某个节点 * 比如:obj.set(data, “ENTRY”, “FA_TOKEN_INVALID”, 1234); * 将 data[‘ENTRY’][‘FA_TOKEN_INVALID’] 设置为1234 * 成功true, 失败false */ Json.prototype.set = function(obj, key) { var args = this.set.arguments; if (ergodic_set(obj, args, 1)) { return true; } else { return false; } }

/** * 在Json对象中创建节点(若存在则覆盖值) * 比如:obj.create(data, ‘add’, ‘hello’, ‘test’, 120); * 加入 data[‘create’][‘hello’][‘test’] 节点并设置值为 120 * 成功true, 失败false */ Json.prototype.create = function(obj, key) { var args = this.create.arguments; if (ergodic_create(obj, args, 1)) { return true; } else { return false; } }

/** * 在Json对象中删除节点 * 比如:obj.delete(prods, ‘grade’, ‘math’); * 成功true, 失败false */ Json.prototype.delete = function(obj, key) { var args = this.delete.arguments; if (ergodic_delete(obj, args, 1)) { return true; } else { return false; } }

/** * 返回Json对象的字符串形式(封装 ECMAScript 库函数) */ Json.prototype.getStr = function(obj) { return JSON.stringify(obj); }

/** * 解析字符串返回Json对象(封装 ECMAScript 库函数) */ Json.prototype.getJson = function(str) { return JSON.parse(str); }

/** * 格式化输出Json对象 */ Json.prototype.print_r = function(obj) { console.log(“{“) ergodic_print(obj, “”); console.log(“}”) }

function ergodic_print(obj, indentation) { var indent = “ ” + indentation; if (obj.constructor == Object) { for (var p in obj) { if (obj[p].constructor == Array || obj[p].constructor == Object) { console.log(indent + “[” + p + “] => ” + typeof(obj) + “”); console.log(indent + “{“); ergodic_print(obj[p], indent); console.log(indent + “}”); } else if (obj[p].constructor == String) { console.log(indent + “[” + p + “] => ‘” + obj[p] + “‘”); } else { console.log(indent + “[” + p + “] => ” + obj[p] + “”); } } } }

function ergodic_set(obj, args, floor) { if (obj.constructor == Object) { for (var tmpKey in obj) { if (tmpKey == args[floor]) { if (floor < args.length – 2) { return ergodic_set(obj[tmpKey], args, floor + 1); } else { // 此时參数floor为倒数第二个。加1值为最后一个 obj[tmpKey] = args[floor + 1]; console.log(“成功设置,返回true”); return true; } } } } }

function ergodic_create(obj, args, floor) { if (obj.constructor == Object) { for (var tmpKey in obj) { if (tmpKey == args[floor]) { if (floor < args.length – 2) { return ergodic_create(obj[tmpKey], args, floor + 1); } else { obj[tmpKey] = args[floor + 1]; return true; } } } } // 节点不存在,创建新节点 if (floor < args.length – 1) { var jsonstr = getJsonFormat(args[args.length – 1]);

for (var i = args.length – 2; i > floor; i–) { jsonstr = ‘{“‘ + args[i] + ‘”:’ + jsonstr + ‘}’; };

// 使用eval解析第三方Json数据时。可能会运行恶意代码 // var node = eval(‘(‘ + jsonstr + ‘)’); var node = JSON.parse(jsonstr); obj[args[floor]] = node; return true; } }

function ergodic_delete(obj, args, floor) { if (obj.constructor == Object) { for (var tmpKey in obj) { if (tmpKey == args[floor]) { if (floor < args.length – 1) { return ergodic_delete(obj[tmpKey], args, floor + 1); } else { delete obj[tmpKey]; return true; } } } } }

function getJsonFormat(param) { if (param.constructor == String) { return ‘”‘ + param + ‘”‘; } else { return param; } }

/** * 使用实例 */

var data = {};

var prods = { ‘name’: ‘Alan’, ‘grade’: { ‘Chinese’: 120, ‘math’: 130, ‘competition’: { ‘NOI’: ‘First prize’ } } }; /* var json = new Json();

console.log(“获取Json中节点”); console.log(json.get(data)); console.log(json.create(data, “0”,””)); console.log(json.set(data, “0”, prods)); console.log(json.create(data, “1”,””)); console.log(json.set(data, “1”, prods)); console.log(json.create(data, “2”,””)); console.log(json.set(data, “2”, prods)); console.log(json.get(data)); json.print_r(data);*/ /* console.log(json.get(data, “OK”)); // 200 console.log(json.get(data, “ENTRY”, “FA_TOKEN_INVALID”)); // 1001 console.log(json.get(data, “TEST”, “获取没有的节点”)); // false 没有的节点返回 false

console.log(“设置Json中节点”); console.log(json.set(data, “ENTRY”, “FA_TOKEN_INVALID”, 1234)); // true 设置成功 console.log(json.get(data, “ENTRY”, “FA_TOKEN_INVALID”)); // 1234 获取刚设置的节点 console.log(json.set(data, “ENTRY”, “測试设置没有的节点”, 1234)); // false 设置失败

console.log(“创建新的Json节点”); var prods = { ‘name’: ‘Alan’, ‘grade’: { ‘Chinese’: 120, ‘math’: 130, ‘competition’: { ‘NOI’: ‘First prize’ } } }; console.log(json.create(prods, ‘create’, ‘hello’, ‘test’, 120)); // true console.log(json.create(prods, ‘create’, ‘hello’, ‘test2’, ‘通过’)); // true

console.log(“格式化输出节点”); json.print_r(prods);

console.log(“删除节点”); console.log(json.delete(prods, ‘grade’, ‘math’)); // true console.log(json.delete(prods, ‘grade’, ‘competition’)); // true console.log(json.delete(prods, ‘grade’, ‘删除没有的节点’)); // false json.print_r(prods); */

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116366.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年1月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档