js 对象和高阶函数简介

参数是函数的函数叫做高阶函数。

1. js date 对象    参考:https://www.runoob.com/jsref/jsref-obj-date.html

var d = new Date();
var d = new Date(milliseconds);
var d = new Date(dateString);
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

getDay();
getDate();
getHours();

var d = new Date(2015, 5, 19, 20, 15, 30, 123);
JavaScript的月份范围用整数表示是0~11,0表示一月,1表示二月……

var d = Date.parse('2015-06-24T19:49:22.875+08:00');
它返回的不是Date对象,而是一个时间戳。
var d = new Date(1435146562875);

d.toLocaleString(); // '2015/6/24 下午7:49:22',本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关
d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT',UTC时间,与本地时间相差8小时

2. indexOf() 方法

var str="Hello world, welcome to the universe.";
var n=str.indexOf("welcome");

--返回13
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
如果没有找到匹配的字符串则返回 -1。

string.indexOf(searchvalue,start)

3.  Array filter() 方法

filter() 方法创建一个新的数组,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
新数组中的元素是通过检查指定数组中符合条件的所有元素。

array.filter(function(currentValue,index,arr), thisValue)

实例:
// Filter visible features that don't match the input value.即过滤了与输入值不匹配的数据
var filtered = mypoi.filter(function (feature) {
    var name = normalize(feature.properties.name);
    return name.indexOf(value) > -1 ;
});

// 删除重复元素
r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
});

4. array map() 方法。

map()方法是定义在js的array中。

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
array.map(function(currentValue,index,arr), thisValue)

实例:遍历数据,仅仅返回某一个属性,形成新的数组
filtered.map(function (feature) {
     return feature.properties.name;
})


//把Array的所有数字转为字符串
arr.map(String);

5.array sort()方法

默认情况下,对字符串排序,是按照ASCII的大小比较的。

因为Arraysort()方法默认把所有元素先转换为String再排序。

通常规定,对于两个元素xy,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。

友情提示,sort()方法会直接对Array进行修改,它返回的结果仍是当前Array

//使用箭头函数
//【注】localeCompare() 是js内置方法
 data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a 排序
 data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z 排序

//根据英文字母排序
//使用箭头函数
 data.sort((a, b)=> b.english.charCodeAt(0)-a.english.charCodeAt(0)); //z~a 排序
 data.sort((a, b)=> a.english.charCodeAt(0)-b.english.charCodeAt(0)); //a~z 排序

//根据数字排序
//使用箭头函数
 data.sort((a, b)=> b.score-a.score); //分数从高到低 排序
 data.sort((a, b)=> a.score-b.score); //分数从低到高 排序

6.格式化输入值

function normalize(string) {
    return string.trim().toLowerCase();
}

7.过滤数组重复属性的函数

    function getUniqueFeatures(array, comparatorProperty) {
        var existingFeatureKeys = {};
        // Because features come from tiled vector data, feature geometries may be split
        // or duplicated across tile boundaries and, as a result, features may appear
        // multiple times in query results.
        var uniqueFeatures = array.filter(function (el) {
            if (existingFeatureKeys[el.properties[comparatorProperty]]) {
                return false;
            } else {
                existingFeatureKeys[el.properties[comparatorProperty]] = true;
                return true;
            }
        });
        return uniqueFeatures;
    };

8. reduce()函数

Array的reduce()把一个函数作用在这个Array[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算

//比方说对一个Array求和,就可以用reduce实现:
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
    return x + y;
}); // 25

9.object.keys()

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for…in 循环遍历该对象时返回的顺序一致
传入对象,返回属性名
传入字符串,返回索引
构造函数 返回空数组或者属性名

猜你喜欢

转载自blog.csdn.net/aganliang/article/details/108568709