Ts基础
//typeof 用来判断变量类型
var s: string = 'egret';
var isString: boolean = typeof s === 'string';
console.log(typeof s === 'string');
console.log(typeof s === 'number');
console.log(typeof s === 'any');
console.log(typeof s === 'array');
//instanceof 用来判断方法或者接口类型
var a: A = new A();
console.log(a instanceof A);
console.log(a instanceof B);
TS用any类型对比as3里的动态object类型
TS参考手册:http://www.runoob.com/manual/gitbook/TypeScript/_book/
private box:any;
//用any代表Object类型
private obj:any = {};
private obj2:Object; constructor(){
Laya.init(600,400);
Laya.Stat.show(0,0); this.box = {height: 5, width: 6, scale: 10};
this.box.isRect = true;
for(var i in this.box){
console.log(i);
} this.obj = new Object();
this.obj.name = "zhagnsan";
this.obj.pass = "123456"; this.obj2 = {};
this.obj2['name'] = "lisi";
this.obj2['pass'] = "12341563";
Laya.stage.on("click",this,this._click);
}
数组克隆
https://www.cnblogs.com/matthew-2013/p/3524297.html
for of不能遍历对象,请改成for in
sort() 方法用于对数组的元素进行排序。语法如下:
arrayObject.sort(sortby)
返回值为对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function NumAscSort(a,b){ return a - b;}function NumDescSort(a,b){ return b - a;}var arr = new Array( 3600, 5010, 10100, 801); arr.sort(NumDescSort);alert(arr);arr.sort(NumAscSort);alert(arr); |
sort(fun)接受了个排序规则函数,这个函数将比较2个数字的大小。而我们的对象数组排序,实际上原理也是一样的。
如果不比较数字的大小,则可以这样:
|
1
2
|
var myarray=["Apple", "Banana", "Orange"]myarray.sort() |
数组直接调用sort()后,数组按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
对于对象数组排序,我们先写一个构造比较函数的函数:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
//by函数接受一个成员名字符串做为参数//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数var by = function(name){ return function(o, p){ var a, b; if (typeof o === "object" && typeof p === "object" && o && p) { a = o[name]; b = p[name]; if (a === b) { return 0; } if (typeof a === typeof b) { return a < b ? -1 : 1; } return typeof a < typeof b ? -1 : 1; } else { throw ("error"); } }} |
要排序的数组:
|
1
2
3
4
5
|
var employees=[]employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"} |
直接调用函数:
|
1
|
employees.sort(by("age")); |
到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。
这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//by函数接受一个成员名字符串和一个可选的次要比较函数做为参数//并返回一个可以用来包含该成员的对象数组进行排序的比较函数//当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下var by = function(name,minor){ return function(o,p){ var a,b; if(o && p && typeof o === 'object' && typeof p ==='object'){ a = o[name]; b = p[name]; if(a === b){ return typeof minor === 'function' ? minor(o,p):0; } if(typeof a === typeof b){ return a < b ? -1:1; } return typeof a < typeof b ? -1 : 1; }else{ thro("error"); } }}employees.sort(by('age',by('name'))); |
好了,现在可以放心使用了。如果看不懂,可直接copy 这个by函数到你的应用里面,直接调用即可。
Ts基础的更多相关文章
- TS基础应用 & Hook中的TS
说在前面 本文难度偏中下,涉及到的点大多为如何在项目中合理应用ts,小部分会涉及一些原理,受众面较广,有无TS基础均可放心食用. **>>>> 阅完本文,您可能会收获到< ...
- TS基础笔记
TS优势 更好的错误的提示,开发中及时发现问题:编辑器语法提示更完善:类型声明可以看出数据结构的语义,可读性更好; TS环境搭建 1.安装node;2.npm install typescript@3 ...
- ts --基础类型
声明js的基本类型1.数字let a: number = 2; 2.字符串let aa: string = "22" 3.数组 (1) 数组元素: let b: number[] ...
- TS 基础数据类型
1.基础数据类型 Boolean布尔值 Number数字 String字符串 Array数组 Tuple元组 Enum枚举 Any void Boolean布尔值:true/fals ...
- ts基础(1)
// let num:number = 12; // let boo:boolean = true; // let str:string = "adfd"; // str = 'a ...
- TS学习随笔(一)->安装和基本数据类型
去年学过一段时间的TS,但由于在工作中不常用.就生疏了,最近项目要求用TS,那我就再回去搞搞TS,写一篇记录一下自己学习TS的进度以及TS知识点 首先,关于TS的定义我就不在这描述了,想看百度一下你就 ...
- TS学习
随着vue3.0的即将到来,是时候学习一下TS了 简介:TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类 ...
- create-react-app的TS支持以及css模块化
开始: 利用官方脚手架,搭建react工程.参考:https://react.docschina.org/docs/create-a-new-react-app.html. 过程: 1.暴露webpa ...
- (二) 从Angular1到Angular2需要的预备知识
1. TypeScript语法与ES6新特性 写惯了jQ的话突然从ES5跳到ES6,又是个变形的ES6(TypeScript),学习成本确实不低.不过笔者也是从ng1直接上手ng2,对与很多新特性的积 ...
随机推荐
- SQL-8 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示
题目描述 找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示CREATE TABLE `salaries` (`emp_n ...
- spring boot 延长 Session 时间
1.查看session时间 默认1800s 通过request.getSession().getMaxInactiveInterval()可以查看你的session时间 2.延长session ...
- C++11智能指针 share_ptr,unique_ptr,weak_ptr用法
0x01 智能指针简介 所谓智能指针(smart pointer)就是智能/自动化的管理指针所指向的动态资源的释放.它是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动 ...
- JavaScript+CSS+DIV实现下拉菜单示例
<!DOCTYPE html> <html> <head> <title>下拉菜单示例</title> <script languag ...
- dialog销毁不干净与弹出多个dialog问题
1.关闭dialog的时候不销毁.重新打开然后影响页面的效果与样式. 原因: dialog的close()只是将html片段隐藏,并没有销毁移除. 解决方式: 打开dialog的时候在写onClose ...
- mail工具的安装、配置及问题处理
使用mail发邮件时,应先将相关邮件服务启动,本文主要介绍sendmail邮件工具的配置方法和问题处理. 1.安装 ubuntu中sendmail函数可以很方便的发送邮件,ubuntu sendmai ...
- Java实现循环链表
本案例需要完成的任务定义如下:实现一个循环链表(单链表),具备增加元素.删除元素.打印循环链表等功能. 网上许多同类问题的实现方式过于复杂.难懂,本文旨在提出一种实现循环链表的简单.易懂的方法. 定义 ...
- golang快速扫描
利用golang的并发优势快速扫描端口 Scanner startIp [endIp] port thread package main import ( "flag" " ...
- 2--JAVA+Maven+TestNG搭建接口测试框架搭建
1.配置JDK 2.安装Eclipse以及TestNG Eclipse下载地址:http://beust.com/eclipse TestNG安装过程:输入网址:http://beust.com/ec ...
- socket模块粘包现象理解以及解决思路
粘包现象: 在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的.因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的 ...