数组和对象两者都可以用来表示数据的集合, 曾一度搞不清楚 "数组"(array) 和 "对象"(object) 的根本区别在哪里.
有一个数组 a=[1,2,3,4], 还有一个对象 a={0:1,1:2,2:3,3:4}, 然后你运行 alert(a[1]), 两种情况下的运行结果是相同的! 这就是说, 数据集合既可以用数组表示, 也可以用对象表示, 那么我到底该用哪一种呢?
我后来才知道, 数组表示有序数据的集合, 而对象表示无序数据的集合. 如果数据的顺序很重要, 就用数组, 否则就用对象.
数组和对象的另一个区别是, 数组的数据没有 "名称"(name), 对象的数据有 "名称"(name).
当然, 两者可以相互转换, 不过似乎, 不太简单.
比如数组:
- var scoreObject = {
- "Tony": {
- "Math": 95,
- "English": 79,
- "Music": 68
- },
- "Simon": {
- "Math": 100,
- "English": 95,
- "Music": 98
- },
- "Annie": {
- "Math": 54,
- "English": 65,
- "Music": 88
- }
- }
转成格式:
- var scoreArray = [
- ["Tony", 95, 79, 68],
- ......
- ];
代码如下:
- var arr6=[];
- for(var i in scoreObject){ // 第一次使用这种 for 循环, 这里 i 并不是 i=1,i=2,i=3.... 这种数字, 而是 i=Tony,i=Simon,i=Annie
- var arr7=[];
- arr7.push(i);
- for(var j in scoreObject[i]){ // 同理这里的 for 循环里的 j 也不是 1,2,3...
- arr7.push(scoreObject[i][j]);
- }
- arr6.push(arr7);
- }
- console.log(arr6);
另数组转对象
- // 数组转对象
- let arr2 = [{
- name: 'dr',
- ct: 'dr001'
- },
- {
- name: 'ljy',
- ct: 'ljy002'
- }]
- let obj2 = {}
- arr2.forEach(item => {
- obj2[item.name] = item.ct
- })
- console.log('obj2', JSON.stringify(obj2, null, 2));
- // obj2 {
- // "dr": "dr001",
- // "ljy": "ljy002"
- // }
- console.log(obj2);
- // {dr: "dr001", ljy: "ljy002"}
另一个小 tip
- var a=[1,2,3,4];
- a['foo']='Hello World';
- alert(a.length);
最后的结果是 4, 也就是说, 数组 a 的元素个数是 4 个.
来源: http://www.bubuko.com/infodetail-3149067.html