问题描述:一个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);