判断元素是否在数组内
jQuery的 inArray()
自己写函数
function exist(source,value){
var i = source.length;
while (i--) {
if (source[i] === value) {
return true;
}
}
return false;
}使用 indexOf() ,没有则返回 -1
根据数组中对象的某一个属性值进行排序
var arr = [
{name:"D.VA",age: 18},
{name: "Mcree",age: 36},
{name:"Anna",age: 42}
]
function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2; //从小到大
}
}
console.log(arr.sort(compare('age')))
扩展排序:
如果是数组不比较数字大小,直接array.sort();
//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");
}
}
}
使用:
比如arr = [ ];
arr[0] = {
age: 10
}
arr[1] = {
age: 5
}
.......
arr.sort(by("age"));
###### 多键值排序,先是对age排序,如果age相同,再比较name。可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。
//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");
}
}
}
arr.sort(by('age',by('name')));
找到数组中最小元素的位置
function indexOfSmallest(a) {
var lowest = 0;
for (var i = 1; i < a.length; i++) {
if (a[i] < a[lowest]) lowest = i;
}
return lowest;
}
其他方法:
function indexOfSmallest(a) {
return a.indexOf(Math.min.apply(Math, a));
}
function indexOfSmallest(a) {
return a.reduce(function(lowest, next, index) {
return next < a[lowest] : index ? lowest; },
0);
}
合并数组
数组去重
Array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());
其他方法参考这篇文章
在数组的指定位置插入元素
1.splice 方法 arr.splice(index,0,item)
判断数组中元素出现的次数最多的一个元素和次数
Array.prototype.maxNum = function(){
var arr = this,obj={};
for(var i =0, len=arr.length;i<len;i++){
var key = arr[i];
if( ! obj[key]){
obj[key] = 1;
}else{
obj[key]++;
}
}
var max = -1,maxStr;
for( key in obj){
if(obj[key]>max){
max = obj[key];
maxStr = key;
}
}
//alert(maxStr); maxStr为最大的元素,max为次数
return [maxStr,max];
}