排序

问题描述:一个json数组中有许多对象,每个对象中有许多属性,如下:按照age的大小排序。说明白就是数组排序问题。注意效率问题。

		obj=[
			{name:'w',age:20,sex:'男'},
			{name:'w1',age:10,sex:'男'},
			{name:'w0',age:40,sex:'男'},
			{name:'wli',age:15,sex:'男'},
			{name:'whh',age:50,sex:'男'}
		];

方法一:根据排序算法,例如经典常用的冒泡排序如下:

		for(var i=0;i<obj.length;i++){
			for(var j=0;j<obj.length-1-i;j++){
				if(obj[j].age>obj[j+1].age){
					var temp=obj[j];
						obj[j]=obj[j+1];
						obj[j+1]=temp;
				}
			}
		}

方法二:sort方法排序,简单快捷,如下所示(reverse为倒序排列)

		function ffD(property){
					return function(a,z){
						var l=a[property];
						var r=z[property];
						return l-r;
					}
		}
		console.log(obj.sort(ffD("age")).reverse());

执行结果正确,如下所示:有小到大和由大到小

                         

数组的延伸:

1.数组的添加(返回原先数组)

    push()方法,在数组的最后添加元素; unshift()方法,在数组的开头添加元素

    splice(删除的位置(必须),删除个数(必须),添加数组(可以是多个)) 可以在数组任意位置添加

2.数组的删除(返回原先数组)

  pop()方法,将数组的最后一个元素删除;  shift()方法,将数组的第一个元素删除

    splice(删除位置(必须),删除个数(必须))

3.数组的拷贝、截取与合并,返回一个新数组,不为指向

     obj.concat()    或者  obj.slice(0)  方法  为拷贝为一个新的数组

     obj.concat(数组)     合并多个数组为一个新数组

     obj.slice(start,end)    截取原数组的部分为一个新数组,开始截取位置必须,结束位置可选

字符串的延伸:

var ab=" Hello World ";

1.字符串的添加,使用+或者concat()

console.log("拼接字符串"+'---'+ab.concat("hhhhh"));
console.log("拼接字符串"+'---'+ab+"hhhhh");
2.字符串的删除,slice()和substring()两个参数,第一个为开始裁剪位置,第二个为结束位置;substr()第二个参数为截取长度
console.log("裁剪字符串"+'---'+ab.slice(0));
console.log("裁剪字符串"+'---'+ab.substring(0,2));
console.log("裁剪字符串"+'---'+ab.substr(0));

    2.1删除字符串前后空格trim()

console.log("删除两边空格"+'---'+ab.trim());
console.log("删除左边空格"+'---'+ab.trimLeft());
console.log("删除右边空格"+'---'+ab.trimRight());

3.字符串大小写转换

console.log("大写转换为小写字母"+'---'+ab.toLocaleLowerCase());
console.log("大->小"+'---'+ab.toLowerCase());
console.log("小写转大写"+'---'+ab.toLocaleUpperCase());
console.log("小写转大写"+'---'+ab.toUpperCase());

4.字符串查找

console.log("根据位置查找对应字符编码"+'---'+ab.charAt(2));
console.log("根据charAt转为为字符编码"+'---'+ab.charCodeAt(3));
console.log("类似数组查找"+'---'+ab[2]);
5.查找字符所处位置索引,对大小写敏感,第一个参数为所要查找的字符,第二个参数为查找位置
console.log("正向查找"+'---'+ab.indexOf("l"));
console.log("反向查找"+'---'+ab.lastIndexOf("l"));

6.匹配字符串位置

var zhengze=/[h|W|o]/g;

    6.1    test() 检索某个字符串是否符合正则表达式,返回true或者false

console.log(zhengze.test(ab));
    6.2   match() 在字符串内检索指定的值,或找到一个或多个正则表达的匹配,g代表全局匹配
console.log(ab.match(zhengze));

    6.3   replace()    用于在字符串中用一些值替换另外一些字符,或替换一个与正则表达式匹配的字符

console.log(ab.replace(zhengze,"RR"));

    6.4   search() 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

console.log(ab.search(正则);

 对象的延伸合并对象的方法:

var a={id:0}   var b={name:'w',age:25}  var c={}   c就是target对象

    1.$.extend(target,obj1,obj2) 返回一个新的对象

            target新的对象,obj1、obj2合并的对象,如果合并对象里的属性一致则后面的覆盖前面的对象属性。

var c=$.extend(a, b);

   2.循环遍历,hasOwnProperty()自身对象是否具有的属性值,boolean类型

		for(var key in b){
			if(b.hasOwnProperty(key)===true){  //用于对象自身是否具有指定名称的属性,boolean
				a[key] = b[key];
			}
		}

  3.Object.assign(target,obj1,obj2)合并对象

Object.assign(c,a,b);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值