JavaScript 基础(二)数组

Array.every是每多个都要满足

//数组容器中含有的属性

字符串, JavaScript 字符串正是用” 和””括起来的字符表示。
   字符字面量, n 换行, t 制表, b 退格, r 回车, f 进纸,
\ 斜杠,’ 单引号(‘) ,” 双号(“)
          xnn 以十二进制代码nn 表示的多少个字符(当中n为0~F)
unnnn以十七进制代码nnnn表示的二个Unicode字符。
    字符串的特征,字符换一旦创制就不可能改造,要变某些变量保存的字符串,首先要销毁原本的字符串,然后在用另叁个暗含字符
          串填充该变量。
   习感觉常操作:

Array.some是有二个满意。

//var arr1 = [1,2,3,4,5];

      var s = ‘Hello world!’;
      s.length;
   要拿走字符串有些钦定地方的字符,使用形似Array
的下标操作,索引号从0 起头。
      var s = ‘Hello world!’;
        s[0]; // ‘H’
        s[6] // ‘ ‘
        s[7] // ‘w’
        s[12] // ‘l’
        s[13] // ‘undefined
超过范围的目录不会报错,但一律重回undefined’
   须求特别注意的是,字符串是不可变的,假如对字符串的某部索引赋值,不会有别的不当,然而,也绝非别的成效:
        var s = ‘Test’;
        s[0] = ‘X’;
        alert(s); // s仍然为’Test’
     toUpperCase
        toUpperCase(卡塔尔(قطر‎ 把二个字符串全体变成大写“
        var s=’Hello’
        s.toUpperCase(); // 返回’HELLO’
     toLowerCase
        toLowerCase(卡塔尔(قطر‎把叁个字符串全体变成小写:
        var s = ‘Hello’;
        var lower = s.toLowerCase(State of Qatar; //
重临’hello’并赋值给变量lower
        lower; // ‘hello’
     indexOf
        indexOf(卡塔尔国会招来内定字符串现身的职位:
        var s = ‘hello, world’;
        s.indexOf(‘world’); // 返回7
        s.indexOf(‘World’卡塔尔; // 未有找到钦赐的子串,再次回到-1
    substring
        substring(State of Qatar重回钦点索引区间的子串:
        var s = ‘hello, world’
        s.substring(0, 5); //
从索引0开始到5(不包括5),返回’hello’
        s.substring(7State of Qatar; // 从索引7初叶到完工,再次回到’world’

Array.find,再次来到切合条件的率先个值。

//arr1.length;

数组
    JavaScript 的Array
能够分包自由数据类型,并透过索引来访谈每个成分。
    要得到Array的长短,直接访谈length属性:

Array.filter

/******************************************************************************

      var arr = [1, 2, 3.14, ‘Hello’, null, true];
      arr.length; // 6

数组的法子分为两类

结缘回想 shift unshift pop push

   请注意,直接给Array的length赋贰个新的值会促成Array大小的更换:
      var arr = [1,2,3];
      arr.length; // 3
      arr; // arr变为[1,2,3, undefined,undefined,undefined]
      arr.length = 2;
      arr; // arr变为[1,2]
  Array能够透过索引把相应的因素改进为新的值,由此,对Array的目录实行赋值会直接修改这一个Array:
    var arr = [‘A’, ‘B’, ‘C’];
    arr[1] = 99;
    arr; // arr将来产生[‘A’, 99, ‘C’]
  注意:若是由此索引赋值时,索引超越了限制,相近会引起Array大小的退换:
    var arr = [1, 2, 3];
    arr[5] = ‘x’;
    arr; // arr变为[1, 2, 3, undefined, undefined, ‘x’]

push,pop,shift,unshift,sort,reverse,splice

累积和删除

JavaScript 基础(二)数组。indexOf() 和lastIndexOf()
    那个八个点子都收到四个参数,要索求的项和象征查找起源地方的目录,个中indexOf
方法从数组的起来起首向后搜索
    lastIndexOf
方准绳从数组的最终开头向前查找。多少个办法在没又找到的情景下再次回到-1,供给寻找的像必得严谨相等,
    好似使用(===)相仿。
    Array也得以经过indexOf(卡塔尔来搜寻多个点名的成分的岗位:
      var arr = [10,20,’30’,’xyz’];
      arr.indexOf(10卡塔尔国; // 成分10 的索引为0
      arr.indexOf(20State of Qatar; // 成分20 的目录为1
      arr.indexOf(30卡塔尔; // 成分30不曾找到,重返-1
      arr.indexOf(’30’State of Qatar; // 成分’30’的目录为2
    注意:数字30和字符串’30’是例外的成分。

2)不转移原数组concat,join–>

shift unshift  从数组初叶开端增多或许去除

slice
    slice(卡塔尔国正是对应String的substring(卡塔尔国版本,它截取Array的有的因素,然后回来二个新的Array:
      var arr = [‘A’,’B’,’C’,’D’,’E’,’F’,’G’] ;
      arr.slice(0,3State of Qatar; // 从索引0最早,到目录3说尽,但不富含索引3:
[‘A’, ‘B’, ‘C’]
      arr.slice(3卡塔尔(قطر‎; // 从索引3在此之前到甘休: [‘D’, ‘E’, ‘F’, ‘G’]
        注意到slice(State of Qatar的起止参数包涵起头索引,不包含结束索引。
   要是不给slice(卡塔尔传递任何参数,它就能漫长截取全数因素。利用这点,大家得以相当轻易地复制一个Array:
      var arr = [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’];
      var aCopy = arr.slice();
      aCopy; // [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’]
      aCopy === arr; // false

split,toStringpush:从数组最终一人最初增加少

pop push  从数组末尾加多可能去除

push 和pop
    push(卡塔尔国 向Array 的末段增添若干成分,pop则把Array
的末尾三个因素删除掉。
    push: 再次来到校正后数组的尺寸,pop(卡塔尔:重临移除的项。
      var arr =[1,2];
    arr.push(‘A’,’B’State of Qatar //重返Array 新的长短:4
        arr: //[1,2,’A’,’B’]
        arr.pop(); // pop() 返回’B’
        arr; // [1,2,’A’]
        arr.pop(): arr.pop(); arr.pop(); 连续pop 3 次
        arr; // []
        arr.pop(卡塔尔; // 空数组继续pop
不会报错,而是再次回到undefined
        arr; //[]

pop:把数组最终一个人剪切

*******************************************************************************/

unshift 和shift
    假如要往Array 的底部增加若干因素,使用unshift(卡塔尔国 方法,shift()方法把Array 的率先个要素删除。
      var arr = [1,2];
      arr.unshift(‘A’,’B’State of Qatar; // 重返Array 新的长短 4
        arr: // [‘A’,’B’,1,2]
      arr.shift(); //’A’
        arr; //[‘B’,1,2]
      arr.shift(); arr.shift(); arr.shit(); //连续shift 3 次
        arr; // []
      arr.shift(卡塔尔; // 空数组接二连三shift不会报错,而是再次回到undefined
        arr;// []

shift:在数组最前一人剪切

//shift:删除原数组第一项,并重返删除成分的值;如若数组为空则再次回到undefined

sort
    sort(卡塔尔国能够对方今Array举行排序,它会直接改过当前Array的因素地点,直接调用时,依据私下认可顺序排序:
    比较的是字符串。
      var arr = [‘B’,’C’,’A’];
      arr.sort();
      arr; //[‘A’,’B’,’C’]
    从小到大排列:(升序卡塔尔(قطر‎
      function compare(value,value){
        if(value1 < value2){
            return -1;
        }else if(value1 >value2 ){
          return 1;
        }else{
          return 0;
        }
      }
    var values = [0,1,5,10,15];
    values.sort(compare);
    alert(values) // 0,1,5,10,15
  从大到小排列(降序卡塔尔(قطر‎
    function compare(value1,value2){
      if(value1 < value2){
          return 1;
        }else if(value1 > value2){
          return -1;
      }else{
        return 0;
      }
    }
    var values = [0,1,5,10,15];
    values.sort(compare);
    alert(values); //15,10,5,1,0

unshift:在数组最前一位加数

var arr1 = [1,2,3,4,5];

reverse
    reverse(卡塔尔国 把全副Array 的因素去掉个个,也是反转。
      var arr = [‘one’,’two’,’three’];
      arr.reverse();
      arr; //[‘three’,’two’,’one’]

reverse:把原数组翻盘

var arr2 = [1,2,3,4,5];

splice
    splice(卡塔尔 方法是改过Array
的全能方法,主要用处是向数组的中央插入项。
      删除:能够去除大肆数量的项,只需点名2 个参数。
        譬如:splice(0,2卡塔尔会删除数组中的前两项
      插入:能够向钦定地点插入放肆数量的项,只需提供3个参数,其实地点,0(要去除的项数State of Qatar和要插入的项,就算
        插入两个项,能够在扩散第四,第五,三个。比如:splice(2,0,”red”,”green”卡塔尔
      替换:可以向钦赐地方插入任意数量的项。同有的时候候删除任性数量的项,只需点名3个项,起先地方,要刨除的项数,
        插入的项不必要和删除的项相等,splice(2,1,”red”,”green”卡塔尔,会删除数组地方2
的项,然后从2的任务
        插入字符串”red”和green。
      var arr = [‘Microsoft’, ‘Apple’, ‘Yahoo’, ‘AOL’, ‘Excite’,
‘Oracle’];
          // 从索引2先河删除3个元素,然后再增加五个因素:
      arr.splice(2, 3, ‘Google’, ‘推特(Twitter卡塔尔国’卡塔尔(قطر‎; // 重回删除的要素
[‘Yahoo’, ‘AOL’, ‘Excite’]
      arr; // [‘Microsoft’, ‘Apple’, ‘Google’, ‘Facebook’,
‘Oracle’]
        // 只删除,不添加:
      arr.splice(2, 2); // [‘Google’, ‘Facebook’]
      arr; // [‘Microsoft’, ‘Apple’, ‘Oracle’]
        // 只添加,不删除:
      arr.splice(2, 0, ‘Google’, ‘Facebook’); //
返回[],因为未有删除任何因素
      arr; // [‘Microsoft’, ‘Apple’, ‘Google’, ‘Facebook’,
‘Oracle’]

splice:arr.splice(从第二人起头,截取多长,在切口处加多新数据卡塔尔

var result = arr1.shift(); //arr1 [2,3,4,5] result:1

concat
    concat(卡塔尔方法把当下的Array和另叁个Array连接起来,并再次回到二个新的Array:
      var arr = [‘A’, ‘B’, ‘C’];
      var added = arr.concat([1, 2, 3]);
    added; // [‘A’, ‘B’, ‘C’, 1, 2, 3]
    arr; // [‘A’, ‘B’, ‘C’]
    注意:concat(卡塔尔国方法并不曾更动当前Array,而是重回了一个新的Array。
    实际上,concat(卡塔尔国方法能够收起自便个要素和Array,並且自动把Array拆开,然后一切加多到新的Array里:
      var arr = [‘A’, ‘B’, ‘C’, 1, 2, 3];
      arr.concat(1, 2, [3, 4]); // [‘A’, ‘B’, ‘C’, 1, 2, 3, 4]

concat :连接join:重回字符串

console.log(result)

join
  join(卡塔尔(قطر‎方法是叁个极其实用的诀窍,它把近日Array的各类成分都用钦命的字符串连接起来,然后回到连接后的字符串:
    var arr = [‘A’, ‘B’, ‘C’, 1, 2, 3];
  arr.join(‘-‘); // ‘A-B-C-1-2-3’
    即使Array的因素不是字符串,将机关转变为字符串后再连接。

slice:截取arr.slice

//unshift:将参数增添到原数组起来,并赶回数组的长短

多维数组
    如若数组的某些元素又是三个Array,则足以产生多维数组,比如:
    var arr = [[1, 2, 3], [400, 500, 600], ‘-‘];

示例

arr1 = [1,2,3,4,5];

1.创造二个数组,决断数组中是不是留存有些值

result = arr1.unshift(-2,-1); //arr1:[-2,-1,1,2,3,4,5] result:7

var newarr = [ { num: 1, val: 'ceshi', flag: 'aa' }, { num: 2, val: 'ceshi2', flag: 'aa2' }]console.log(newarr.filter(item => item.num===2 ))

console.log(result)

2.也足以透过上边方法过滤掉num为2的预先流出num为1的

//pop:删除原数组最终一项,并再次回到删除成分的值;假若数组为空则再次来到undefined

var newarr = [ { num: 1, val: 'ceshi', flag: 'aa' }, { num: 2, val: 'ceshi2', flag: 'aa2' }]console.log(newarr.filter)

arr1= [1,2,3,4,5];

3.去掉空数组空字符串、undefined、null

result = arr1.pop(); //a:[1,2,3,4] b:5

var arr = ['1','2',undefined, '3.jpg',undefined]var newArr = arr.filterconsole.logvar arr = ['1','2',null, '3.jpg',null]var newArr = arr.filterconsole.log>//空字符串里面不能包含空格var arr = ['1','2','', '3.jpg','']var newArr = arr.filterconsole.log

console.log(result)

4.去掉数组中不切合项

//push:将参数增添到原数组末尾,并重回数组的尺寸

var arr = [20,30,50, 96,50]var newArr = arr.filter console.log

var arr = ['10','12','23','44','42']var newArr = arr.filter(item => item.indexOf console.log

var arr = [1, 2, 2, 3, 4, 5, 5, 6, 7, 7,8,8,0,8,6,3,4,56,2];var arr2 = arr.filter=>self.indexOf console.log; //[1, 2, 3, 4, 5, 6, 7, 8, 0, 56]

/* 有一个对象数组 a ,将a数中对象某个属性的值存储到B数组中*/ var porducts = [ {name:"cucumber",type:"vegetable"}, {name:"banana",type:"fruit"}, {name:"celery",type:"vegetable"}, {name:"orange",type:"fruit"},];// es5var filteredProducts = [];for(var i = 0;i < porducts.length; i ++){ if(porducts[i].type === "fruit"){ // 如果条件满足就把当前的值推入 filteredProducts.push }}// console.log//0: {name: "banana", type: "fruit"}1: {name: "orange", type: "fruit"}length: 2__proto__: Array// ES6 var filter2 = porducts.filter{//对porducts数组对象过滤如果porduct.type === "fruit"就return出去,再用一个变量接住 return porduct.type === "fruit"})console.log

/* 需求二 有一个对象数组A,过滤掉不满足以下条件对象 条件:蔬菜 数量大于0 价格小于10*/ var products = [ {name:"cucumber",type:"vegetable",quantity:0,price:1}, {name:"banana",type:"fruit",quantity:10,price:16}, {name:"celery",type:"vegetable",quantity:30,price:8}, {name:"orange",type:"fruit",quantity:3,price:6},];products = products.filter{ return product.type === "vegetable" && product.quantity > 0 && product.price < 10})console.log//0: {name: "celery", type: "vegetable", quantity: 30, price: 8}name: "celery"price: 8quantity: 30type: "vegetable"__proto__: Objectlength: 1__proto__: Array

/* 需求三: 有两个数组A,B,根据A中的ID值 ,过滤掉B数组不符合的数据*/ var post = {id:4,title:"javascript"};var comments = [ {postId:4,content:'Angular4'}, {postId:2,content:'VUE.js'}, {postId:3,content:'Node.js'}, {postId:4,content:'React.js'},];function commentsForPost{ return comments.filter{ return comment.postId === post.id; })}console.log(commentsForPost// 0: {postId: 4, content: "Angular4"}1: {postId: 4, content: "React.js"}length: 2__proto__: Array

arr1 = [1,2,3,4,5];

发表评论

电子邮件地址不会被公开。 必填项已用*标注