数组的妙用
本文介绍的内容适用于 js 与 qml,本文着重在 qml 中使用,毕竟 js 现在的 es6 语法十分强大。
根据公司业务需求,需要使用到数组的字符形式,即 array["character"] = xx
形式(本文统称字符数组),特意研究了一下,这里分享给大家!
一、字符数组介绍
一般的数组中括号中都是数字,但是因为一些特别的需求,我们需要在中括号中使用字符或者字符串,对于这样的字符数组,想要对其进行增删查改有些困难,因为数组的常规操作 pop()、push()、shift()、unshift()、slice()、splice() 等均失效,length 也等于 0,让人有种无从下手的感觉。
二、字符数组的增删查改思路
想要对字符数组进行增删查改,思路其实很简单,就一个映射就能解决所有问题,设定个两个数组,一个数组放数字(即 array["character"] = num
),一个数组放字符或字符串(即 array["num"] = character
),增删查改操作在后者完成即可,完成后使用循环创建一个新的字符数组,然后将新的数组赋给前者即可。
如果遇到 array["character"] = character
这种情况的话,那就需要多做两次映射就完事。
三、字符数组的增删查改实现
废话不多说,直接上代码:
var a = new Array; //创建数组 a 用于字符数组
var b = new Array; //创建数组 b 用于普通数组
b = ["aa", "bb", "cc", "ss"]; //将数组 a 中需要用到的字符串存入数组 b
//完成数组映射的函数
function atob(){
var arr = new Array;
for(i = 0; i < b.length; i ++){
arr[b[i]] = i;
}
return arr;
}
//将数组 b 做映射,得数组 a
a = atob();
//增加
b.push("dd");
a = atob();
//删除
b.splice(a["bb"], 1);
a = atob();