/**
* 数组合并
* 关联数组键名冲突后面覆盖前面,所引数组则不覆盖
* arr1,arr2,arr3,...
* @returns {Array}
*/
function array_merge() {
var numargs = arguments.length; //获取参数人的个数
var newArr = [];
for (var i = 0; i < numargs; i++) {
for (var k in arguments[i]) {
if (isNaN(k)) {//键名不是一个数字
newArr[k] = arguments[i][k];
} else {
newArr[parseInt(newArr.length) + 1] = arguments[i][k];
}
}
}
return newArr;
}
/**
* 去除数组的重复值
* @param array||object arr;
* @returns array
*/
function array_unique(arr) {
if (arr === null || typeof arr === 'undefined' || typeof arr != 'object') {
return arr;
}
var arr2 = [];
for (var k in arr) {
if (!in_array(arr[k], arr2)) {
arr2[k] = arr[k];
}
}
return arr2;
}
/**
* 删除数组元素
* @param array arr 数组
* @param string key 键名
* @returns {unresolved}
*/
function array_strip(arr, key) {
if (arr === null || typeof arr === 'undefined' || typeof arr != 'object') {
return arr;
}
key = String(key);
for (var k in arr) {
if (k === key) {
delete arr[key];
arr.splice(key, 1);
}
}
return arr;
}
/**
* 获取数组或对象的元素个数
* @returns {Array}
*/
function count(o) {
var o_type = Object.prototype.toString.call(o);
if (o_type != '[object Array]' && o_type != '[object Object]' && o_type != '[object DTMF]' && o_type != '[object Event]' && o_type != '[object ODBC]' && o_type != '[object Session]') {//o既不是数组又不是对象是直接反回o
return false;
}
var i = 0;
for (var k in o) {
i++;
}
return i;
}
/**
* 对像转为数组 javascript 中的数组为 键值从0开始的 连续不间断 的对象
* @param {type} arr
* @returns {Array}
*/
function object_array(obj) {
var arr = [];
for (var k in obj) {
arr.push(obj[k]);
}
return arr;
}
/**
* 在 arr 中搜索 needle,如果找到则返回 TRUE,否则返回 FALSE。
* @param {type} needle
* @param {type} arr
* @returns {undefined}
*/
function in_array(needle, arr) {
if (arr === null || typeof arr === 'undefined' || typeof arr != 'object') {
return false;
}
for (var k in arr) {
if (arr[k] == needle) {
return true;
}
}
return false;
}