js对字典序列的处理

对于javascript来说,字典类(Dictionary)的基础是Array类,js中的Array既是一个数组,同时也是一个字典。所以除了直接遍历外,还能用Object.keys的对复杂类型进行遍历。

  • 对已经定义好的字典序列使用for遍历取全部值。注意这里必须是字典序列而不是array里面的字典元素!
    var dic = {c:4, a:2, d:3, b:1}; // 定义一个字典

    console.log("输出最初的字典元素: "); 
    for(var key in dic){
        console.log("key: " + key + " ,value: " + dic[key]);
    }
  • 使用Object.keys遍历,注意返回值是个数组,而且每一个元素都会变成string属性。而且会根据key的值进行排序。
// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']
 
// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']
 
// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']
  • 直接字典序列的值进行取值、增加、修改、删除,就像之前object.keys取的是字符串数组一样,直接取值,键也要是字符串。包括想要给字典新增一个键值对时,key也要包裹在引号中,但是实际的值不是字符串。
 //创建
var data={ key1:"value1",key2:"value2"};
 
//取值
 var dataValue = data["key1"]
//或 var dataValue = data.key1,当key 为数值时该取值法不可用,是复杂类型时也不可以用
//例: 
 var data ={ 111:"111",222:"222"}
   var dataValue = data["111"]//正确
   var dataValue = data.111 //错误
 
 //添加,注意此时的key也需要加引号,但是key实际的类型不是字符串
 //添加时无该key值则添加,有则修改value
 data["key3"] = "value3"; 
 data.key4 = "value4";
 
 //修改
 data["key1"] = "value0"; 
 data.key4 = "value0";

//存在则删除,!!把一个任意类型的值转换为布尔类型,存在为true,不存在为false
if (!!data["key2"]) { 
    delete (data["key2"]);
} 
// 删除元素,对应之前两种取值方式
delete data.key1;  

//新建一个字典序列
var dic = new Array(); 
// 添加字典的元素( key:value)
dic['one'] = '1';      
dic['three'] = '3';
dic['two'] = '2';
dic['8'] = 'seven'; //此时key的值是8 但是取value时仍需要dic['8']

当然一个更简单的办法是:

let test = {}
test.id = 1
test.name = 'Mike'
// 最后产生的是{id:1,name:'Mike'}
  • 遍历嵌套在数组里的字典序列,用forEach获取每一个字典,因为这是结构相似的字典,所以可以直接取值。
                this.exp.forEach(ele => {
                    console.log(ele["lab_name"])
                });
  • json数据也属于字典序列,只是一般不是规整的数据结构,值里面继续嵌套字典,所以用json的数据结构解析他。

猜你喜欢

转载自blog.csdn.net/qq_41337100/article/details/107153051