ES6學(xué)習(xí)總結(jié)之Set和Map的使用
前言
當(dāng)我們需要存儲(chǔ)一些數(shù)據(jù)的時(shí)候,首先想到的是定義一個(gè)變量用來存儲(chǔ),之后我們可能學(xué)了數(shù)組,發(fā)現(xiàn)數(shù)組比變量可以存儲(chǔ)更多的數(shù)據(jù),接著可能有其它的存儲(chǔ)數(shù)據(jù)的方法等等,然而我今天需要介紹的是在ES6中比較常見使用的數(shù)據(jù)類型結(jié)構(gòu),Set和Map。
Set數(shù)據(jù)結(jié)構(gòu)
一、Set簡(jiǎn)介
set中成員的值都是唯一的,沒有重復(fù)的值
向set中添加成員時(shí),不會(huì)發(fā)生類型轉(zhuǎn)換
向set中添加的對(duì)象總是不想等
二、常用的屬性和方法
屬性:
size:返回set實(shí)例的成員總數(shù)
方法:
add():添加某個(gè)值,返回set本身
delete():刪除某個(gè)值,返回一個(gè)布爾值,判斷刪除是否成功
has():返回一個(gè)布爾值,表示該值是否為set成員
clear():清除所有成員,沒有返回值
keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對(duì)的遍歷器
forEach():使用回調(diào)函數(shù)遍歷每個(gè)成員
三、實(shí)例剖析
為了方便大家更好的了解和學(xué)習(xí)set,我在這里會(huì)將這些方法和屬性進(jìn)行分類整理和講解
1、set的基本用法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>數(shù)組去重</title>
</head>
<body>
<script type="text/javascript">
const set=new Set(); //創(chuàng)建set數(shù)據(jù)結(jié)構(gòu)
[1,1,2,3,4,5].forEach(x=>{
set.add(x);
})
console.log(set); //1,2,3,4,5
for(let i of set){
console.log(i);
}
</script>
</body>
</html>
可以看到向Set添加成員時(shí),不會(huì)添加重復(fù)的值
2、數(shù)組作為參數(shù)傳入到set結(jié)構(gòu)中
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<script type="text/javascript">
// const set=new Set([1,2,3]);
// console.log(...set);//1,2,3,使用擴(kuò)展運(yùn)算符
const set=new Set(document.querySelectorAll('div'));
console.log(set.size);//5 size返回set實(shí)例的成員總數(shù)
//如上代碼相當(dāng)于
const item=new Set();
document.querySelectorAll('div').forEach(x=>{
item.add(x);
})
console.log(item);
console.log(item.size);//5
</script>
</body>
</html>3、set中添加的值不會(huì)發(fā)生類型轉(zhuǎn)換
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>向set中添加成員時(shí),不會(huì)發(fā)生類型轉(zhuǎn)換</title>
</head>
<body>
<script type="text/javascript">
let mySet=new Set();
mySet.add(5);
mySet.add('5');
console.log(mySet);//5,'5'
let set=new Set();
let a=NaN;
let b=NaN;
set.add(a);
set.add(b);
console.log(set);//NaN
</script>
</body>
</html>向 Set 加入值的時(shí)候,不會(huì)發(fā)生類型轉(zhuǎn)換,所以5和"5"是兩個(gè)不同的值。Set 內(nèi)部判斷兩個(gè)值是否不同,使用的算法叫做“Same-value-zero equality”,它類似于精確相等運(yùn)算符(===),主要的區(qū)別是向 Set 加入值時(shí)認(rèn)為NaN等于自身,而精確相等運(yùn)算符認(rèn)為NaN不等于自身。
4、set中添加的對(duì)象總是不想等的
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>向set中添加的對(duì)象總是不想等</title>
</head>
<body>
<script type="text/javascript">
let set=new Set();
set.add({});//向set中添加一個(gè)空對(duì)象
console.log(set.size);//1
set.add({});//向set中添加另一個(gè)空對(duì)象
console.log(set.size);//2
</script>
</body>
</html>由于兩個(gè)空對(duì)象不相等,所以它們被視為兩個(gè)值
5、Array.from()方法
Array.from()可以將set結(jié)構(gòu)轉(zhuǎn)為數(shù)組,這就提供了去除數(shù)組重復(fù)成員的另一種方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Array.from()方法</title>
</head>
<body>
<script type="text/javascript">
const items=new Set([1,2,3,4,5]);
console.log(items);//1,2,3,4,5
const array=Array.from(items);
console.log(array);//1.2.3,4,5
//Array.from()方法實(shí)現(xiàn)數(shù)組去重
function dedupe(arr){
return Array.from(new Set(arr))
}
console.log(dedupe([1,1,2,3]));//1,2,3
</script>
</body>
</html>四.遍歷的應(yīng)用
1、數(shù)組去重
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>數(shù)組去重</title>
</head>
<body>
<script type="text/javascript">
let set=new Set(['red','blue','green']);
let arr=[...set];
console.log(arr);//red,blue,green
//數(shù)組去重
let arrs=[1,1,3,3,4,5,6];
let unique=[...new Set(arrs)];
console.log(unique);//1,3,4,5,6
</script>
</body>
</html>2、間接使用數(shù)組的方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>間接使用數(shù)組的方法</title>
</head>
<body>
<script type="text/javascript">
let set=new Set([1,2,3,4,5]);
set=new Set([...set].map(x=>x*2));//使用數(shù)組的map方法
console.log(set);//2,4,6,8,10
let mySet=new Set([1,2,3,4,5]);
mySet=new Set([...mySet].filter(x=>x%2==0));//使用數(shù)組的filter方法
console.log(mySet);//2,4
</script>
</body>
</html>3、實(shí)現(xiàn)并集,交集,差集
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>實(shí)現(xiàn)并集,交集,差集</title>
</head>
<body>
<script type="text/javascript">
let a=new Set([1,2,3]);
let b=new Set([4,3,2]);
//并集
let union=new Set([...a, ...b]);
console.log(union);//1,2,3,4
//交集
let intersect=new Set([...a].filter(x=>b.has(x)));
console.log(intersect);//2,3
//差集
let difference=new Set([...a].filter(x=>!b.has(x)));
console.log(difference);//1
</script>
</body>
</html>4、同步改變?cè)瓉淼?Set 結(jié)構(gòu)
如果想在遍歷操作中,同步改變?cè)瓉淼?Set 結(jié)構(gòu),目前沒有直接的方法,但有兩種變通方法。一種是利用原 Set 結(jié)構(gòu)映射出一個(gè)新的結(jié)構(gòu),然后賦值給原來的 Set 結(jié)構(gòu);另一種是利用Array.from方法。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>同步改變?cè)瓉淼?Set 結(jié)構(gòu)</title>
</head>
<body>
<script type="text/javascript">
//方法一
let set=new Set([1,2,3]);
set=new Set([...set].map(val=>val*2));
console.log(set);//2,4,6
//方法二
let mySet=new Set([1,2,3]);
mySet=new Set(Array.from(mySet,val=>val*2));
console.log(mySet);//2,4,6
</script>
</body>
</html>五、set實(shí)例屬性和方法
1、size屬性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set中的size屬性</title>
</head>
<body>
<script type="text/javascript">
const set=new Set();
//向set中添加成員
set.add(1);
set.add(2);
set.add(3);
//鏈?zhǔn)椒椒?
set.add(4).add(5).add(6);
console.log(set.size);//6
</script>
</body>
</html>2、操作方法add()、delete()、has()、clear()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set中的操作方法add()、delete()、has()、clear()</title>
</head>
<body>
<script type="text/javascript">
const set=new Set();
//向set中添加成員
set.add(1);
set.add(2);
set.add(3);
//鏈?zhǔn)椒椒?
set.add(4).add(5).add(6);
console.log(set.size);//6
console.log(set.has(1));//true
set.delete(1);
console.log(set.has(1));//false
set.clear();//清空全部set成員
console.log(set.size);//0
</script>
</body>
</html>3、遍歷方法keys()、values()、entries()、forEach()
注意:set的遍歷順序就是插入順序,由于set沒有鍵名,只有鍵值(或者說鍵名和鍵值是同一個(gè)值),所以keys()和values()方法的行為完全一致
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>set中的遍歷方法keys(),values(),entries(),forEach()</title>
</head>
<body>
<script type="text/javascript">
let set=new Set(['red','blue','green']);
//遍歷全部的key
for(let key of set.keys()){
console.log(key);//red,blue,green
}
//遍歷全部的value
for(let value of set.values()){
console.log(value);//red,blue,green
}
//遍歷全部的key和value
for(let item of set.entries()){
console.log(item);//['red','red'],['blue','blue'],['green','green']
}
set.forEach((key,value)=>{
console.log(key+':'+value);
})
</script>
</body>
</html>Map數(shù)據(jù)結(jié)構(gòu)
一、Map簡(jiǎn)介
es6中的map很大程度上和set相似,但是map是以鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)的
二、常用的屬性和方法
屬性:
size:返回map結(jié)構(gòu)的成員總數(shù)
方法:
set(key,value):設(shè)置鍵名key對(duì)應(yīng)的鍵值value,然后返回整個(gè)map結(jié)構(gòu),如果key已經(jīng)有值,則鍵值會(huì)被更新,否則就新生成該鍵
get(key):讀取key對(duì)應(yīng)的鍵值,如果找不到key,則返回undefined
has(key):返回一個(gè)布爾值,表示某個(gè)鍵是否在當(dāng)前map對(duì)象中
delete(key):刪除某個(gè)key,返回true,如果刪除失敗,返回false
clear():清除所有成員,沒有返回值
keys():返回鍵名的遍歷器
values():返回鍵值的遍歷器
entries():返回鍵值對(duì)的遍歷器
forEach():遍歷map的所有成員
三、實(shí)例剖析
1、size屬性
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的size屬性</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
map.set('foo',true);
map.set('bar',false);
console.log(map.size);//2
</script>
</body>
</html>2、set(key,value)方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的set()方法</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
map.set('1','a');//鍵是字符串
map.set(2,'b');//鍵是數(shù)值
map.set(undefined,'3');//鍵是undefined
console.log(map);//'1'=>a,2=>b,undefinde=3
const myMap=new Map();
//鏈?zhǔn)綄懛?
myMap.set(1,'a').set(2,'b').set(3,'c');
console.log(myMap);//1=>a,2=>b,3=>c
</script>
</body>
</html>3、get(key)方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的get()方法</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
const hello=function(){
console.log('你好');
}
map.set(hello,'es6');//鍵是函數(shù)
console.log(map.get(hello));//es6
</script>
</body>
</html>4、has(key)方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的has()方法</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
//鏈?zhǔn)綄懛?
map.set('a',1).set('b',2).set('c',3);//向map中添加成員
console.log(map.has('a'));//true
console.log(map.has('b'));//true
console.log(map.has('c'));//true
console.log(map.has('d'));//false
</script>
</body>
</html>5、delete(key)方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的delete方法</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
map.set('a',1);
console.log(map.has('a'));//true
map.delete('a');//刪除鍵a
console.log(map.has('a'));//false
</script>
</body>
</html>6、clear()方法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map中的clear()方法</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
map.set('foo',true);//向map中添加成員
map.set('bar',false);
console.log(map.size);//2
map.clear();//清除map中的全部成員
console.log(map.size);//0
</script>
</body>
</html>7、遍歷方法keys()、values()、entries()、forEach()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>遍歷方法keys(),values(),entries(),forEach()</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();
//向map中添加成員
map.set(1,'a');
map.set(2,'b');
map.set(3,'c');
//遍歷全部的鍵
for(let key of map.keys()){
console.log(key);//1,2,3
}
//遍歷全部的值
for(let values of map.values()){
console.log(values);//a,b,c
}
//遍歷全部的鍵和值
for(let [key,value] of map.entries()){
console.log(key,value);//1=>a,2=>b,3=>c
}
for(let item of map.entries()){
console.log(item[0],item[1]);//1=>a,2=>b,3=>c
}
for(let [key,value] of map){
console.log(key,value);//1=>a,2=>b,3=>c
}
map.forEach(function(value,key){
console.log(key,value);
})
</script>
</body>
</html>注意:
這里的forEach()是值在前,鍵在后
8、map結(jié)構(gòu)轉(zhuǎn)為數(shù)組
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map結(jié)構(gòu)轉(zhuǎn)為數(shù)組</title>
</head>
<body>
<script type="text/javascript">
const map=new Map([
[1,'one'],
[2,'two'],
[3,'three']
]);
console.log([...map.keys()]);//[1,2,3]
console.log([...map.values()]);//one,two,three
console.log([...map]);//[1,one],[2,two],[3,three]
console.log([...map.entries()]);//[1,one],[2,two],[3,three]
const map1=new Map(
[...map].filter(([key,value])=>key<3)//使用數(shù)組的filter方法
);
console.log(map1);//1=>one,2=>two
</script>
</body>
</html>三、Map與其它數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換
作為鍵值對(duì)存儲(chǔ)數(shù)據(jù)的map與其它數(shù)據(jù)也可以進(jìn)行轉(zhuǎn)換,我們看下下面的案例
1、Map轉(zhuǎn)為數(shù)組
map轉(zhuǎn)為數(shù)組最方便的方法,就是使用擴(kuò)展運(yùn)算符...
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Map轉(zhuǎn)為數(shù)組</title>
</head>
<body>
<script type="text/javascript">
const map=new Map();//創(chuàng)建map數(shù)據(jù)結(jié)構(gòu)
map.set(true,7);//向map中添加成員
map.set({foo:3},['abc']);
console.log([...map]);//[[true,7],[{foo:3},['abc']]];
</script>
</body>
</html>2、數(shù)組轉(zhuǎn)為Map
將數(shù)組傳入map構(gòu)造函數(shù),就可以轉(zhuǎn)為map
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>數(shù)組轉(zhuǎn)為map</title>
</head>
<body>
<script type="text/javascript">
const map=new Map([
[true,7],
[{foo:3},['abc']]
]);
console.log(map);
//map{
//true=>7,
//object:{foo:3}=>['abc'];
//}
</script>
</body>
</html>3、Map轉(zhuǎn)為對(duì)象
如果所有map的鍵都是字符串,它可以無損的轉(zhuǎn)為對(duì)象,如果有非字符串的鍵名,那么這個(gè)鍵名會(huì)被轉(zhuǎn)為字符串,再作為對(duì)象的鍵名
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map轉(zhuǎn)為對(duì)象</title>
</head>
<body>
<script type="text/javascript">
function strMapObj(strMap){
let obj=Object.create(null);//創(chuàng)建一個(gè)新對(duì)象
for(let [key,value] of strMap){//遍歷循環(huán)strMap
obj[key]=value;
}
return obj;
}
const map=new Map().set('yes',true).set('no',false);
console.log(strMapObj(map));//{yes:true,no:false}
</script>
</body>
</html>在這里了我需要講解一下Object.create()這個(gè)方法,官方的意思是:Object.create()方法創(chuàng)建一個(gè)新對(duì)象,使用現(xiàn)有的對(duì)象來提供新創(chuàng)建的對(duì)象的__proto__
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>測(cè)試Object.create()方法</title>
</head>
<body>
<script type="text/javascript">
const person={
isHuman: false,
printIntroduction: function () {
console.log(this.name,this.isHuman);
}
}
const me = Object.create(person);
me.name = "Matthew";
me.isHuman = true;
me.printIntroduction();//Mattew,true
</script>
</body>
</html>4、對(duì)象轉(zhuǎn)為Map
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>對(duì)象轉(zhuǎn)為map</title>
</head>
<body>
<script type="text/javascript">
function objToMap(obj){
let map=new Map();
for(let key of Object.keys(obj)){
map.set(key,obj[key]);
}
return map;
}
console.log(objToMap({yes:true,no:false}));//yes=>true,no=>false
</script>
</body>
</html>在這里講解Object.keys()方法,官方解釋:Object.keys() 方法會(huì)返回一個(gè)由一個(gè)給定對(duì)象的自身可枚舉屬性組成的數(shù)組,數(shù)組中屬性名的排列順序和使用,for..in循環(huán)遍歷該對(duì)象時(shí)返回的順序一致 。如果對(duì)象的鍵-值都不可枚舉,那么將返回由鍵組成的數(shù)組。
參數(shù):
要返回其枚舉自身屬性的對(duì)象
返回值:
一個(gè)表示給定對(duì)象的所有可枚舉屬性的字符串?dāng)?shù)組
// 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']
// getFoo is a property which isn't enumerable
var myObj = Object.create({}, {
getFoo: {
value: function () { return this.foo; }
}
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']5、Map轉(zhuǎn)為JSON字符串
map轉(zhuǎn)為json要區(qū)分兩種情況,一種情況時(shí)map的鍵名都是字符串,這時(shí)可以選擇轉(zhuǎn)為對(duì)象json,另一種情況是map的鍵名有非字符串,這時(shí)可以選擇轉(zhuǎn)為數(shù)組json。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>map轉(zhuǎn)為json</title>
</head>
<body>
<script type="text/javascript">
function strMapToObj(strMap){
let obj=Object.create(null);//創(chuàng)建一個(gè)新對(duì)象
for(let [key,value] of strMap){
obj[key]=value;
}
return obj;
}
function strMapToJson(strMap){
return JSON.stringify(strMapToObj(strMap));
}
let map=new Map().set('yes',true).set('no',false);
let obj=strMapToJson(map);
console.log(obj);//{'yes':true,'no':false}
function mapToArrayJson(map){
return JSON.stringify([...map]);
}
let fooMap=new Map().set(true,7).set({foo:3},['abc']);
let foo=mapToArrayJson(fooMap);
console.log(foo);//[[true:7],[{foo:3},['abc']]]
</script>
</body>
</html>6、JSON字符串轉(zhuǎn)為Map
json轉(zhuǎn)為map,正常情況下所有鍵名都是字符串,但是有一種特殊情況,整個(gè)json就是一個(gè)數(shù)組,且每個(gè)數(shù)組成員本身,又是一個(gè)有兩個(gè)成員的數(shù)組,這時(shí)它可以一一對(duì)應(yīng)的轉(zhuǎn)為map,這往往是map轉(zhuǎn)為數(shù)組json的逆操作。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>json轉(zhuǎn)為map</title>
</head>
<body>
<script type="text/javascript">
function objTostrMap(obj){
let map=new Map();
for(let key of Object.keys(obj)){
map.set(key,obj[key]);
}
return map;
}
function jsonToStrMap(jsonStr){
return objTostrMap(JSON.parse(jsonStr));
}
let obj1=jsonToStrMap('{"yes": true, "no": false}')
console.log(obj1);//yes=>true,no=>false
function jsonToMap(jsonStr){
return new Map(JSON.parse(jsonStr));
}
let obj2=jsonToMap('[[true,7],[{"foo":3},["abc"]]]')//true=>7,{foo:3}=>['abc']
console.log(obj2);
</script>
</body>
</html>總結(jié)
本章我們主要學(xué)習(xí)了ES6中set和map相關(guān)的屬性和方法,set和map的方法中有很多都是相同的方法,has()、delete()、clear()、keys()、values()、entries、forEach()等等。
到此這篇關(guān)于ES6學(xué)習(xí)總結(jié)之Set和Map的使用的文章就介紹到這了,更多相關(guān)ES6學(xué)習(xí)總結(jié)之Set和Map的使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 一文帶你徹底搞懂JS中的Map與Set
- JavaScript中Set和Map數(shù)據(jù)結(jié)構(gòu)使用場(chǎng)景詳解
- 一文詳解JS中的Map、Set、WeakMap和WeakSet
- javascript中Set、Map、WeakSet、WeakMap區(qū)別
- javascript?ES6中set集合、map集合使用方法詳解與源碼實(shí)例
- JavaScript Set與Map數(shù)據(jù)結(jié)構(gòu)詳細(xì)分析
- js中Map和Set的用法及區(qū)別實(shí)例詳解
- JavaScript之Map和Set_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
- 詳談js遍歷集合(Array,Map,Set)
相關(guān)文章
Javascript學(xué)習(xí)筆記之函數(shù)篇(四):arguments 對(duì)象
JavaScript中arguments函數(shù)對(duì)象是該對(duì)象代表正在執(zhí)行的函數(shù)和調(diào)用它的函數(shù)的參數(shù)。JavaScript 函數(shù)中 arguments 為特殊對(duì)象,無需明確指出參數(shù)名,就能訪問它們。2014-11-11
javascript處理a標(biāo)簽超鏈接默認(rèn)事件的方法
這篇文章主要介紹了javascript處理a標(biāo)簽超鏈接默認(rèn)事件的方法,涉及event.preventDefault()方法阻止默認(rèn)事件的使用技巧,需要的朋友可以參考下2015-06-06
javascript學(xué)習(xí)筆記(八) js內(nèi)置對(duì)象
javascript學(xué)習(xí)筆記之js內(nèi)置對(duì)象,需要的朋友可以參考下2012-06-06
Javascript學(xué)習(xí)筆記之 對(duì)象篇(一) : 對(duì)象的使用和屬性
Javascript 中的一切都可以視為對(duì)象,除了兩個(gè)特例:null 和 undefined。2014-06-06
JS中for循序中延遲加載動(dòng)態(tài)效果的具體實(shí)現(xiàn)
今天在做一個(gè)前端的效果的時(shí)候碰到一個(gè)棘手的問題,就是實(shí)現(xiàn)一個(gè)動(dòng)態(tài)的圓柱效果,廢話不多少,直接上代碼2013-08-08

