JS数组、字符串、数学函数

2016-07-11  本文已影响77人  coolheadedY
var arr = [1,2,3];
arr.push(4);//返回4并添加到数组末尾
console.log(arr);//[1, 2, 3, 4]
arr.pop();//取得数组末尾4并移除
console.log(arr);//[1,2,3]
var arr = [1,2,3];
arr.shift();//取得数组首位1并移除
console.log(arr);//[2, 3]
arr.unshift(0,1);//返回数组当前长度4,并在数组首位推入0,1
console.log(arr);//[0, 1, 2, 3]
var arr = [1,2,3,4,5,6,7];
arr.join("||");
console.log(arr);//"1||2||3||4||5||6||7"
arr.join("--");
console.log(arr);//"1--2--3--4--5--6--7"
var str = "Hello,world";
str.split("");//按""进行分隔["H", "e", "l", "l", "o", ",", "w", "o", "r", "l", "d"]
var str1 = "a b c d e";
str1.split(" ", 3);//按" "空格进行分隔并返回的数组长度为3["a", "b", "c"]
        var arr = [1,2,3,4,5];
        function push(arr, val) {
            arr.splice(arr.length, 0, val);
            return arr.length;
        }
        function pop(arr) {
            return arr.splice(arr.length - 1, 1)[0];
        }
        function unshift(arr, val) {
            arr.splice(0, 0, val);
            return arr.length;
        }
        function shift(arr) {
            return arr.splice(0, 1)[0];
        }
var prod = {
    name: '女装',
    styles: ['短款', '冬季', '春装']
};
function getTpl(data){
          var dom = [];
          dom.push('<dl class="product">');
        dom.push('<dt>' + data.name + '</dt>');
        for (var i = 0; i < data.styles.length; i++) {
          dom.push('<dd>' + data.styles[i] + '<dd>');
          }
          dom.push('</dl>');
          return dom.join("\n");;
};
var result = getTplStr(prod);  //result为下面的字符串
<dl class="product">
    <dt>女装</dt>
    <dd>短款</dd>
    <dd>冬季</dd>
    <dd>春装</dd>
</dl>
var arr = [ "test", 2, 1.5, false ]
find(arr, "test") // 0
find(arr, 2) // 1
find(arr, 0) // -1
            function find(arr, val){
                // return arr.indexOf(val);
                for(var i = 0; i < arr.length; i++){
                    if (arr[i] === val) {
                        return i;
                    }
                }
                return -1;
            }
function find(arr, val) {
      return arr.indexOf(val); 
}//ES5方法
arr = ["a", "b", 1, 3, 5, "b", 2];
newarr = filterNumeric(arr); // [1,3,5,2]
            var arr1 = ["a", "b", 1, 3, 5, "b", 2];
            function filterNumeric(arr) {
                var arr2= [];
                for (var i = 0; i < arr.length; i++) {
                    if (typeof arr[i] == "number") {
                        arr2.push(arr[i]);
                    }
                }
                return arr2;
            }
            var newarr = filterNumeric(arr1); //[1,3,5,2]
var obj = {
  className: 'open menu'
}
addClass(obj, 'new') // obj.className='open menu new'
addClass(obj, 'open')  // 因为open已经存在,此操作无任何办法
addClass(obj, 'me') // obj.className='open menu new me'
console.log(obj.className)  // "open menu new me"
removeClass(obj, 'open') // obj.className='menu new me'
removeClass(obj, 'blabla')  // 不变
           var obj = {
                className: 'open menu'
            };
            function addClass(obj, value) {
                var arr = obj.className.split(" ");
                if (arr.indexOf(value) == -1) {
                    arr.push(value);
                    obj.className = arr.join(" ");
                    return obj.className;
                }
                else {
                    console.log("因为" + value + "已经存在,此操作无任何办法");
                }
            }
            function removeClass(obj, value) {
                var arr = obj.className.split(" ");
                if (arr.indexOf(value) != -1) {
                    arr.splice(arr.indexOf(value), 1);
                    obj.className = arr.join(" ");
                    return obj.className;
                }
                else {
                    console.log(value + "不存在");
                }
            }
camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'

slice(start,end)数组方法可以直接用于数组,当对象是string和number时slice会把string和number拷贝到一个新数组里(转化成一个新数组进行操作)

          function camelize(str) {
                var arr = str.split("-");
                for (var i = 1; i < arr.length; i++) {
                    arr[i] = arr[i].slice(0, 1).toUpperCase() + arr[i].slice(1);
                }
                str = arr.join("");
                return str;     
            }
            camelize('background-color');
            camelize('list-style-image');
arr = ["a", "b"];
arr.push( function() { alert(console.log('hello hunger valley')) } );
arr[arr.length-1]()  // 控制台输出'hello hunger valley',弹窗显示undefined
//arr.push()方法把函数添加到了数组arr的最尾端
//arr[arr.length-1]() 直接执行了数组中的函数
//函数执行console.log('hello hunger valley')输出字符串,但返回的是undefined
//弹窗变为alert(undefined)弹出undefined结果
arr = ["a", "b", 1, 3, 4, 5, "b", 2];
//对原数组进行操作,不需要返回值
filterNumericInPlace(arr);
console.log(arr)  // [1,3,4,5,2]
           arr = ["a", "b", 1, 3, 4, 5, "b", 2];
            //对原数组进行操作,不需要返回值
            function filterNumericInPlace(arr) {
                for (var i = arr.length-1; i >= 0; i--) {
                    if(typeof arr[i] != "number") {
                        arr.splice(i, 1);//会改变数组的长度
                    }
                }
            }//使用i++会因为数组长度改变,每进行删除时数组头部开始后面的每一项的位置都在前移。
//而使用i--,数组长度改变但数组前部的其他项的位置没有变只是尾部各项的位置前移,但尾部各项因为遍历过了的位置前移并不影响。
//就好像一个队列移走哪个位置的人后排的所有人就会向前走一步占据被移走的那个位置,但前排的人位置始终是不变的。
            filterNumericInPlace(arr);
            console.log(arr);  // [1,3,4,5,2]
var john = { name: "John Smith", age: 23 }
var mary = { name: "Mary Key", age: 18 }
var bob = { name: "Bob-small", age: 6 }
var people = [ john, mary, bob ]
ageSort(people) // [ bob, mary, john ]
            var john = { name: "John Smith", age: 23 }
            var mary = { name: "Mary Key", age: 18 }
            var bob = { name: "Bob-small", age: 6 }
            var people = [ john, mary, bob ]
            function ageSort(people) {
                var arr = [];
                people.sort(function(a, b){ return a.age - b.age;});
                for (var i = 0; i < people.length; i++) {
                    arr.push(people[i].name);
                }
                return arr;
            }
            ageSort(people) // [ bob, mary, john]
//sort()数组方法可以随机抽取数组内的两个项进行比较,并进行排序。
            function isNumeric (el){
                return typeof el === 'number'; 
            }
            arr = ["a",3,4,true, -1, 2, "b"]
            function filter(arr, func) {
                for (var i = 0; i < arr.length; i++) {
                    if (!func(arr[i]) || typeof arr[i] == "boolean") {
                        arr.splice(i, 1);
                    }
                }
                return arr;
            }
            arr = filter(arr, isNumeric) ; // arr = [3,4,-1, 2],  过滤出数字
            arr = filter(arr, function(val) { return val > 0 });  // arr = [3, 4, 2] 过滤出大于0的整数
            function ucFirst(str) {
                str = str.slice(0, 1).toUpperCase() + str.slice(1);
                return str;
            }
ucFirst("hunger") == "Hunger"
truncate("hello, this is hunger valley,", 10)) == "hello, thi...";
truncate("hello world", 20)) == "hello world"
              function truncate(str, maxlength) {
                if (str.length >= maxlength) {
                        str = str.slice(0, maxlength+1) + "...";
                    }
                return str;
            }
var num1 = 3.456;
limit2( num1 ); //3.46
limit2( 2.42 ); //2.42
            function limit2(num) {
                num = Math.round(num * 100);
                return num/100;
            }
            var num1 = 3.456;
            limit2( num1 ); //3.46
            limit2( 2.42 ); //2.42
            function ran(min, max) {
                return Math.random() * (max - min) + min;
            }
            function ran1(min, max) {
                return Math.floor(Math.random() * (max - min + 1) + min);
            }//floor是向下舍入。  
               function ran2(min, max, len) {
                var arr = [];
                for (var i = 0; i < len; i++) {
                    arr.push(Math.floor(Math.random() * (max - min + 1) + min));
                }
                return arr;
            }   

本博客版权归 本人和饥人谷所有,转载需说明来源

上一篇 下一篇

猜你喜欢

热点阅读