JS的 array方法 總結(jié)

數(shù)組創(chuàng)建

javascript中創(chuàng)建數(shù)組的方式有兩種

  • 第一種是 使用Array構(gòu)造函數(shù):
var arr1 = new Array();//創(chuàng)建一個(gè)空數(shù)組
var arr2 = new Array(20);//創(chuàng)建一個(gè)包含20項(xiàng)的數(shù)組
var arr3 = new Array("hello","world");//創(chuàng)建一個(gè)包含2個(gè)字符串的數(shù)組
  • 第二種是 使用數(shù)組字面量表示法
var arr4 = [];//創(chuàng)建一個(gè)空數(shù)組
var arr5 = [20];//創(chuàng)建一個(gè)包含20項(xiàng)的數(shù)組
var arr6 = ["hello","world"];//創(chuàng)建一個(gè)包含2個(gè)字符串的數(shù)組

javascript中數(shù)組的length屬性是可以修改的:

var arr = ["hello","world","hi"];//創(chuàng)建一個(gè)包含3個(gè)字符串的數(shù)組
arr[arr.length] = "apple";//在下標(biāo)為3處(也就是數(shù)組尾部)添加一項(xiàng)“apple”
arr.length=arr.length-1;//將數(shù)組的最后一項(xiàng)刪除

判斷一個(gè)對(duì)象是不是數(shù)組對(duì)象:

  • 在ECMAScript5之前译株,我們可以通過(guò) instanceof Array 去判斷;

這個(gè)操作符和JavaScript中面向?qū)ο笥悬c(diǎn)關(guān)系烟具,了解這個(gè)就先得了解JavaScript中的面向?qū)ο蟆R驗(yàn)檫@個(gè)操作符是檢測(cè)對(duì)象的原型鏈?zhǔn)欠裰赶驑?gòu)造函數(shù)的prototype對(duì)象的。

  • 在ECMAScript5中藤违,新增了Array.isArray()方法粥脚。

這個(gè)方法的目的是最終確定某個(gè)值到底是不是數(shù)組谍咆,而不管它是在哪個(gè)全局執(zhí)行環(huán)境中創(chuàng)建的。
針對(duì)ES5新增的方法瀏覽器支持情況:
Opera 11+
Firefox 3.6+
Safari 5+
Chrome 8+
Internet Explorer 9+

數(shù)組方法

數(shù)組的方法有數(shù)組原型方法私股,也有從object對(duì)象繼承來(lái)的方法
接下來(lái)是數(shù)組的原型方法:

join()

  • join( separator ):將數(shù)組元素組成一個(gè)字符串摹察,最多只有一個(gè)參數(shù)separator即分隔符,沒(méi)有參數(shù)的話默認(rèn)用逗號(hào)為分隔符倡鲸;
  • 原數(shù)組不變供嚎;
var arr = [1,2,3];
console.log(arr.join());//1,2,3
console.log(arr.join("-"));//1-2-3
console.log(arr);//[1,2,3](原數(shù)組不變)
  • 通過(guò)join()方法可以實(shí)現(xiàn)重復(fù)字符串,只需要傳入字符串以及重復(fù)的次數(shù)旦签,就能返回重復(fù)后的字符串查坪,函數(shù)如下:
function repeatString(str,n){
   return new Array(n+1).join(str);
}
console.log(repeatString("abc",3));//abcabcabc
console.log(repeatString("Hi",5));//HiHiHiHiHi

push()和pop()

  • push():可以傳入任意個(gè)數(shù)的參數(shù),將參數(shù)逐個(gè)添加到數(shù)組末尾宁炫,返回值是修改后的數(shù)組的長(zhǎng)度偿曙;
  • pop():刪除數(shù)組末尾最后一項(xiàng),減少數(shù)組的length值羔巢,返回值是被刪除的值望忆;
var arr = ["koko","lulu","hehe"];
var count = arr.push("jack","sam");
console.log(count);// 5
console.log(arr);//["koko","lulu","hehe","jack","sam"]
var item = arr.pop();
console.log(item);//sam
console.log(arr);//["koko","lulu","hehe","jack"]
shift()和unshift()
  • unshift():可以傳入任意個(gè)數(shù)的參數(shù),將參數(shù)逐個(gè)添加到數(shù)組的開(kāi)頭竿秆,返回值是修改后的數(shù)組的長(zhǎng)度启摄;
  • shift():刪除數(shù)組第一項(xiàng),減少數(shù)組的length值幽钢,返回值是被刪除的值歉备,如果數(shù)組為空,則返回undefined匪燕;
var arr = ["koko","lulu","hehe"];
var count = arr.unshift("jack","sam");
console.log(count);// 5
console.log(arr);//["jack","sam","koko","lulu","hehe"]
var item = arr.shift();
console.log(item);//jack
console.log(arr);//["sam","koko","lulu","hehe"]
sort()
  • 默認(rèn)按升序排列數(shù)組項(xiàng)蕾羊,即從小到大排序,但是只作用于字符串帽驯,也就是按照 字符編碼的順序進(jìn)行排序龟再;對(duì)于數(shù)字也是要先默認(rèn)轉(zhuǎn)換成字符串,再排序尼变;
  • 原數(shù)組改變利凑;
var arr1 = ["a", "d", "c", "b"];
console.log(arr1.sort());// ["a", "b", "c", "d"]
arr2 = [22,33,11,66,5];
console.log(arr2.sort());//[11,22,33,5,66];
console.log(arr2);//[11,22,33,5,66](原數(shù)組被改變)
  • 參數(shù)可選,若有嫌术,則必須是 函數(shù)哀澈,用來(lái)規(guī)定排序順序;

  • 如果想按照其他標(biāo)準(zhǔn)進(jìn)行排序蛉威,就需要提供比較函數(shù)日丹,該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說(shuō)明這兩個(gè)值的相對(duì)順序的數(shù)字蚯嫌。比較函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b哲虾,其返回值如下:

    若 a 小于 b丙躏,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,則返回一個(gè)小于 0 的值束凑。
    若 a 等于 b晒旅,則返回 0。
    若 a 大于 b汪诉,則返回一個(gè)大于 0 的值废恋。

  • 用sort()方法實(shí)現(xiàn) 按照數(shù)值的大小對(duì)數(shù)字進(jìn)行排序;

function sortNumber(a,b){
  return a-b
}
arr2 = [22,33,11,66,5];
console.log(arr2.sort(sortNumber));//[5,11,22,33,66]
  • 這里可以看出扒寄,如果按照升序排列鱼鼓,那么方法為:
function sortNumber(a,b){
  return a-b
}

如果按照降序排列:

function sortNumber(a,b){
  return b-a
}
  • 如果想根據(jù) 數(shù)組對(duì)象中的某個(gè)屬性值 進(jìn)行排序呢?

sort 方法接收一個(gè)函數(shù)作為參數(shù)该编,這里嵌套一層函數(shù)用來(lái)接收對(duì)象的屬性名迄本,其他部分代碼與正常使用sort方法相同;
//下面這種方法比較局限课竣,已經(jīng)把升序還是降序?qū)懰懒耍?/p>

var arr = [
  { name:'cj',age:18 },
  { name:'wzm',age:20 },
  { name:'dudu',age:8 }
];
function compare(property){
    return function(a,b){
        var value1 = a[property];
        var value2 = b[property];
        return value1 - value2;
  }
}
console.log(arr.sort(compare('age')));

結(jié)果如圖所示:


image.png
  • 那如何用傳參的方式嘉赎,根據(jù)參數(shù)不同,來(lái)確定是升序排列于樟,還是降序排列公条?
function sortBy(property,rev){
    if(rev == undefined){
        rev = 1; //第二個(gè)參數(shù)沒(méi)有傳遞,默認(rèn)升序排列
    }else{
        rev = (rev) ? 1 : -1;
    }
    return function(a,b){
        a = a[property];
        b = b[property];
        if(a<b){
            return rev * -1
        }
        if(a>b){
            return rev * 1
        }
        return 0;
    }
}
var newArray=[
    { name:'cj',age:18 },
    { name:'wzm',age:20 },
    { name:'dudu',age:8 }
];
console.log(newArray.sort(sortBy('age',false)));

結(jié)果如圖所示:


image.png
reverse()
  • reverse():反轉(zhuǎn)數(shù)組項(xiàng)的順序迂曲;
  • 原數(shù)組改變靶橱;
var arr = [22,33,11,66,5];
console.log(arr.reverse()); //[5,66,11,33,22]
console.log(arr); //[5,66,11,33,22](原數(shù)組改變)
concat()
  • concat():將參數(shù)添加到數(shù)組的末尾;
  • 原理:concat()方法會(huì)先創(chuàng)建當(dāng)前數(shù)組的一個(gè)副本路捧,然后將接收到的參數(shù)添加到這個(gè)副本的末尾抓韩,最后返回新構(gòu)建的數(shù)組。在沒(méi)有給concat()方法傳遞參數(shù)的情況下鬓长,它只是復(fù)制當(dāng)前數(shù)組并返回副本。
  • 原數(shù)組不變尝江;
var arr = [1,3,5,7];
var arrCopy = arr.concat(9,[11,13]);
console.log(arrCopy); //[1,3,5,7,9,11,13]
console.log(arr); //[1,3,5,7]
  • 從上面測(cè)試的結(jié)果可以發(fā)現(xiàn):傳入的不是數(shù)組涉波,則直接把參數(shù)添加到數(shù)組后面,如果傳入的是一維數(shù)組炭序,則將此一維數(shù)組中的各個(gè)項(xiàng)添加到數(shù)組中啤覆。
  • 如果傳入的是一個(gè)二維數(shù)組呢?
var arrCopy2 = arr.concat([9,[11,13]]);
console.log(arrCopy2); //[1,3,5,7,9,Array[2]]
console.log(arrCopy2[5]); //[11,13]

上述代碼中惭聂,arrCopy2數(shù)組的第五項(xiàng)是一個(gè)包含兩項(xiàng)的數(shù)組窗声,也就是說(shuō),concat方法只能將傳入數(shù)組中的每一項(xiàng)添加到數(shù)組中辜纲,如果傳入數(shù)組中的有些項(xiàng)是數(shù)組笨觅,那么也會(huì)把這一數(shù)組當(dāng)作一項(xiàng)拦耐,添加到arrCopy2中。

slice()
  • slice():從原數(shù)組中指定開(kāi)始下標(biāo)到結(jié)束下標(biāo)之間的項(xiàng)組成的新數(shù)組见剩;
  • slice()方法的參數(shù)有一個(gè)或者兩個(gè)杀糯,即表示返回項(xiàng)的起始和結(jié)束位置。

只有一個(gè)參數(shù)時(shí)苍苞,slice()方法返回的是從該參數(shù)指定位置開(kāi)始到當(dāng)前數(shù)組末尾的所有項(xiàng)固翰;
如果有兩個(gè)參數(shù),該方法返回起始和結(jié)束位置之間的項(xiàng)——但不包括結(jié)束位置的項(xiàng)羹呵;

var arr = [1,3,5,7,9,11];
var arrCopy = arr.slice(1);
var arrCopy2 = arr.slice(1,4);
var arrCopy3 = arr.slice(1,-2);
var arrCopy4 = arr.slice(-4,-1);
console.log(arr); //[1,3,5,7,9,11](原數(shù)組不變)
console.log(arrCopy); //[3,5,7,9,11]
console.log(arrCopy2); //[3,5,7]
console.log(arrCopy3); //[3,5,7]
console.log(arrCopy4); //[5,7,9]

arrCopy 只設(shè)置一個(gè)參數(shù)1骂际,也就是起始下標(biāo)為1,所以返回的數(shù)組為下標(biāo)為1(包括1)開(kāi)始到數(shù)組最后冈欢;
arrCopy2設(shè)置了兩個(gè)參數(shù)(1,4)歉铝,返回起始下標(biāo)(包括1)開(kāi)始到終止下標(biāo)(不包括4)的子數(shù)組;
arrCopy3設(shè)置了兩個(gè)參數(shù)涛癌,終止下標(biāo)為負(fù)數(shù)犯戏,當(dāng)出現(xiàn)負(fù)數(shù)時(shí),將負(fù)數(shù)加上數(shù)組的長(zhǎng)度的值(6)來(lái)替換該位置的數(shù)拳话,因此是從1到4(不包括)的子數(shù)組先匪;
arrCopy4中兩個(gè)參數(shù)都是負(fù)數(shù),所以都加上數(shù)組的長(zhǎng)度6轉(zhuǎn)換成正數(shù)弃衍,因此相當(dāng)于slice(2,5)呀非;

splice()

  • splice():很強(qiáng)大的數(shù)組的方法,它有很多用法镜盯,可以實(shí)現(xiàn)刪除岸裙、插入替換速缆;
  • 刪除:需要2個(gè)參數(shù)降允,第一個(gè)參數(shù)表示要?jiǎng)h除的第一項(xiàng)的位置(索引),第二個(gè)參數(shù)表示要?jiǎng)h除的項(xiàng)數(shù)艺糜。例如:splice(0,2)表示刪除數(shù)組中的前兩項(xiàng)剧董。
  • 插入:可以向指定位置插入任意數(shù)量的值,需要提供3種參數(shù):起始位置破停、0(要?jiǎng)h除的項(xiàng)數(shù))翅楼、要插入的值(可以多個(gè))。例如:splice(2,0,4,6)表示從數(shù)組的第二個(gè)值后面插入4和6真慢。
  • 替換:將數(shù)組中的任意一個(gè)或幾個(gè)值替換成其他值毅臊,需要提供3種參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))黑界、要插入的值(可以多個(gè))管嬉。例如:splice(2,1,4,6)表示刪除第二個(gè)值后面的一個(gè)數(shù)(也就是第三個(gè)數(shù))皂林,將第三數(shù)替換成4和6。
  • splice()方法 :始終都會(huì)返回一個(gè)數(shù)組宠蚂,該數(shù)組的值是從原數(shù)組中刪除的值式撼,如果沒(méi)有刪除的項(xiàng),則返回一個(gè)空數(shù)組求厕。
  • 原數(shù)組改變著隆;
var arr = [1,3,5,7,9,11];
var arrRemoved = arr.splice(0,2);
console.log(arr); //[5,7,9,11]
console.log(arrRemoved); //[1,3]
var arrRemoved2 = arr.splice(2,0,4,6);
console.log(arr); //[5,7,4,6,9,11]
console.log(arrRemoved2); //[]
var arrRemoved3 = arr.splice(1,1,2,4);
console.log(arr); //[5,2,4,4,6,9,11]
console.log(arrRemoved2); //[7]

find()

  • find()方法 返回函數(shù)中滿足提供的測(cè)試函數(shù)的第一個(gè)元素的值。否則返回 undefined呀癣;

  • 語(yǔ)法:arr.find(callback[,thisArg])

  • 參數(shù):
    callback:在數(shù)組每一項(xiàng)上執(zhí)行的函數(shù)美浦,接收3個(gè)參數(shù):

    • element:當(dāng)前遍歷到的元素;
    • index:當(dāng)前遍歷到的索引项栏;
    • array:數(shù)組本身浦辨;

    thisArg: 可選。指定 callback 的 this 參數(shù)沼沈;

function isBigEnough(element){
    return element >= 15;
}
[12,5,8,130,44].find(isBigEnough); //130

findIndex()

  • findIndex()方法 返回?cái)?shù)組中滿足提供的測(cè)試函數(shù)的第一個(gè)元素的索引流酬。否則返回-1;

  • 語(yǔ)法:arr.findIndex(callback[,thisArg])

  • 參數(shù):
    callback:在數(shù)組每一項(xiàng)上執(zhí)行的函數(shù)列另,接收3個(gè)參數(shù):

    • element:當(dāng)前遍歷到的元素芽腾;
    • index:當(dāng)前遍歷到的索引;
    • array:數(shù)組本身页衙;

    thisArg: 可選摊滔。指定 callback 的 this 參數(shù);

function isBigEnough(element){
    return element >= 15;
}
[12,5,8,130,44].findIndex(isBigEnough); // 3

ES5新增的9個(gè)數(shù)組方法:

indexOf() 和 lastIndexOf()
  • indexOf():接收2個(gè)參數(shù):第一個(gè)參數(shù)表示要查找的項(xiàng)店乐,第二個(gè)參數(shù)表示查找起點(diǎn)位置的索引艰躺。從數(shù)組開(kāi)頭(第二個(gè)參數(shù))開(kāi)始向后查找。返回的是要查找的項(xiàng)的索引值眨八。
  • lastIndexOf():接收2個(gè)參數(shù):第一個(gè)參數(shù)表示要查找的項(xiàng)腺兴,第二個(gè)參數(shù)表示查找起點(diǎn)位置的索引。從數(shù)組末尾(第二個(gè)參數(shù))開(kāi)始向前查找廉侧。返回的是要查找的項(xiàng)的索引值(索引仍然是從左向右計(jì)算含长,注意不要弄混)。
  • 沒(méi)有找到的情況下返回 -1伏穆;
  • 在比較第一個(gè)參數(shù)與數(shù)組中的每一項(xiàng)時(shí),會(huì)使用全等操作符纷纫;
var arr = [1,3,5,7,7,5,3,1];
console.log(arr.indexOf(5)); //2
console.log(arr.lastIndexOf(5)); //5
console.log(arr.indexOf(5,2)); //2
console.log(arr.lastIndexOf(5,4)); //2
console.log(arr.indexOf("5")); //-1
forEach()
  • forEach():對(duì)數(shù)組進(jìn)行循環(huán)遍歷枕扫,并將元素傳遞給回調(diào)函數(shù)。
  • 參數(shù)是函數(shù)參數(shù)(必需):function(currentValue, index, arr)辱魁,數(shù)組中每個(gè)元素都要調(diào)用的函數(shù)烟瞧。currentValue表示當(dāng)前元素(必需)诗鸭;index表示當(dāng)前元素的索引值(可選);arr表示當(dāng)前元素所屬的數(shù)組對(duì)象(可選)参滴;
  • 這個(gè)方法沒(méi)有返回值(undefined)强岸;
  • 注意:forEach()對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。
var arr = [1,2,3,4,5];
arr.forEach(function(x,index,a){
    console.log(x+'|'+index+'|'+(a===arr))
})
//輸出為:
// 1|0|true
// 2|1|true
// 3|2|true
// 4|3|true
// 5|4|true
map()
  • map():指“映射”砾赔,也就是原數(shù)組被“映射”成對(duì)應(yīng)新數(shù)組蝌箍;
  • 參數(shù)為函數(shù),和forEach()方法差不多暴心,但是需要有返回值妓盲;
  • 下面代碼利用map方法實(shí)現(xiàn)數(shù)組中每個(gè)數(shù)求平方;
var arr = [1,2,3,4,5];
var arr2 = arr.map(function(item){
      return item*item;
});
console.log(arr2); //[1,4,9,16,25]
  • 在實(shí)際使用的時(shí)候专普,我們可以利用map方法方便獲得對(duì)象數(shù)組中的特定屬性值們悯衬。例如:
var users = [
  {name: "張含韻", "email": "zhang@email.com"},
  {name: "江一燕",   "email": "jiang@email.com"},
  {name: "李小璐",  "email": "li@email.com"}
];
var emails = users.map(function(user){
      return user.email;
});
console.log(emails);

結(jié)果如下:


image.png
  • Array.prototype擴(kuò)展可以讓IE6-IE8瀏覽器也支持map方法:
if(typeof Array.prototype.map != "function"){
    Array.prototype.map = function(fn,context){
          var arr = [];
          if(typeof fn === "function"){
                for(var k = 0,length = this.length;k<length;k++){
                      arr.push(fn.call(context,this[k],k,this));
                }
          }
          return arr;
    };
}
filter()
  • filter():指“過(guò)濾”,也就是原數(shù)組被“過(guò)濾”成對(duì)應(yīng)新數(shù)組檀夹;
  • 參數(shù)為函數(shù)筋粗,和forEach()方法差不多,但是需要有返回值炸渡,返回值是滿足過(guò)濾條件的數(shù)組娜亿;
var arr = [1,2,3,4,5,6,7,8,9,10];
var arr2 = arr.filter(function(x,index){
      return index % 3 === 0 || x >= 8;
});
console.log(arr2); //[1,4,7,8,9,10]
every()
  • every():判斷數(shù)組中每一項(xiàng)都是否滿足條件,只有所有項(xiàng)都滿足條件偶摔,才會(huì)返回true暇唾。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.every(function(x) {
return x < 10;
}); 
console.log(arr2); //true
var arr3 = arr.every(function(x) {
return x < 3;
}); 
console.log(arr3); // false
some()
  • some():判斷數(shù)組中是否存在滿足條件的項(xiàng),只要有一項(xiàng)滿足條件辰斋,就會(huì)返回true策州。
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.some(function(x) {
return x < 3;
}); 
console.log(arr2); //true
var arr3 = arr.some(function(x) {
return x < 1;
}); 
console.log(arr3); // false
reduce()
  • reduce() 方法接收一個(gè)函數(shù) callback 作為累加器(accumulator),數(shù)組中的每個(gè)值(從左到右)開(kāi)始合并宫仗,最終為一個(gè)值够挂。
  • 語(yǔ)法:
array.reduce(callback[, initialValue])
  • reduce() 方法接收 callback 函數(shù),而這個(gè)函數(shù)包含四個(gè)參數(shù):
function callback(accmulator, currentValue, currentIndex, array) {}

accmulator:上一次調(diào)用回調(diào)返回的值藕夫,或者提供的初始值(initialValue)
currentValue:當(dāng)前項(xiàng)
currentIndex:當(dāng)前項(xiàng)的索引
array:調(diào)用reduce()方法的數(shù)組
而 initialValue 作為第一次調(diào)用 callback 函數(shù)的第一個(gè)參數(shù)

  • reduce() 方法為數(shù)組中的每一個(gè)元素依次執(zhí)行回調(diào)函數(shù) callback孽糖,不包括數(shù)組中被刪除或從未被賦值的元素,接受四個(gè)參數(shù):初始值(或者上一次回調(diào)函數(shù)的返回值)毅贮,當(dāng)前元素值办悟,當(dāng)前索引,調(diào)用 reduce() 的數(shù)組滩褥。
  • 回調(diào)函數(shù)第一次執(zhí)行時(shí)病蛉,accumulator 和 currentValue 可以是一個(gè)值,如果 initialValue 在調(diào)用 reduce() 時(shí)被提供,那么第一個(gè) accumulator 等于 initialValue 铺然,并且 currentValue 等于數(shù)組中的第一個(gè)值俗孝;如果 initialValue 未被提供,那么 accumulator 等于數(shù)組中的第一個(gè)值魄健,currentValue 等于數(shù)組中的第二個(gè)值
var arr = [0,1,2,3,4];
arr.reduce(function (accumulator, currentValue, currentIndex, array) {
    return accumulator+ currentValue;
}); // 10
reduceRight()
  • reduceRight() 方法的功能和 reduce() 功能是一樣的赋铝,不同的是 reduceRight() 從數(shù)組的末尾向前將數(shù)組中的數(shù)組項(xiàng)做累加。
ar arr = [0,1,2,3,4];
arr.reduceRight(function (accumulator, currentValue, currentIndex, array) {
    return accumulator + currentValue;
}); // 10
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末沽瘦,一起剝皮案震驚了整個(gè)濱河市革骨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌其垄,老刑警劉巖苛蒲,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異绿满,居然都是意外死亡臂外,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)喇颁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)漏健,“玉大人,你說(shuō)我怎么就攤上這事橘霎∧杞” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵姐叁,是天一觀的道長(zhǎng)瓦盛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)外潜,這世上最難降的妖魔是什么原环? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮处窥,結(jié)果婚禮上嘱吗,老公的妹妹穿的比我還像新娘。我一直安慰自己滔驾,他們只是感情好谒麦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著哆致,像睡著了一般绕德。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摊阀,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天耻蛇,我揣著相機(jī)與錄音剩瓶,去河邊找鬼。 笑死城丧,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豌鹤。 我是一名探鬼主播亡哄,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼布疙!你這毒婦竟也來(lái)了蚊惯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤灵临,失蹤者是張志新(化名)和其女友劉穎截型,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體儒溉,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宦焦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顿涣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片波闹。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涛碑,靈堂內(nèi)的尸體忽然破棺而出精堕,到底是詐尸還是另有隱情,我是刑警寧澤蒲障,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布歹篓,位于F島的核電站龙宏,受9級(jí)特大地震影響碍现,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疟丙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一余黎、第九天 我趴在偏房一處隱蔽的房頂上張望重窟。 院中可真熱鬧,春花似錦惧财、人聲如沸巡扇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)厅翔。三九已至,卻和暖如春搀突,著一層夾襖步出監(jiān)牢的瞬間刀闷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留甸昏,地道東北人顽分。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像施蜜,于是被迫代替她去往敵國(guó)和親卒蘸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容