// js二维数组的增删改查,遍历操作
// 情况一,一般二维数组,一维二维键值均为数字
edit();
function edit(){
var data = [
["30", 1, "联系组一", "1", true],
["31", 1, "联系组二", "1", true],
["180", 1,"局机关第一党支部", "1", true],
["181", 1,"局机关第二党支部", "1", true],
["182", 1,"局机关第三党支部", "1", true],
["183", 1,"局机关第四党支部", "1", true],
["184", 1,"局机关第五党支部", "1", true],
["185", 1,"局机关第六党支部", "1", true],
["186", 1,"局机关离退休第一党支部", "1", true],
["187", 1,"局机关离退休第二党支部", "1", true],
["188", 1,"局机关离退休第三党支部", "1", true]
];
// 通过键值获取值
// console.log(data);
// console.log(data[0][3]);
// 数组添加的几种方式
data.push(["189", 1, "局机关离退休第四党支部", "1", true]);
data[data.length] = ["200", 1, "局机关离退休第四党支部", "1", true];
data.unshift( ["2", 1, "局机关离退休第四党支部", "1", true] ); // 表示在数组头插入
data.splice(0,0,["1", 1, "党委总支", "1", true]); // 表示在data[0]的位置插入
// 删除数组某一元素
// 方法一,使用splice(键值,长度,替换的内容)
data.shift(); // 删除数组第项data[0]
data.splice(0,1); // 表示删除data[0]
data.splice(0,2); // 表示删除data[0]、data[1];
data[3].splice(0,1,"111"); // 表示替换data[3]的内容为111;
data.pop(); // 删除最后一个,并返回该值
// console.log(data);
// 查询的几种方式
// console.log( data.indexOf( ["180", 1, "局机关第一党支部", "1", true, Array(5)] ) ); // indexOf,只可搜素整数参数(所以我这里写的,是没用的)
// Arr.find()的参数是一个回调函数,数组所有元素会遍历这个回调函数,直到找到第一个返回值为true的元素,然后返回该元素否则返回undefined;
// 下面结果返回值:["181", 1, "局机关第二党支部", "1", true, Array(1)]
console.log( data.find(function(item,index,array){
return item[0] == "181";
// return item == ["181", 1, "局机关第二党支部", "1", true, Array(1)]+""; // 这个可以匹配数组
}));
// 和上面find一样,不同的是返回结果是索引,可以用于splice根据索引删除;或者判断某个值是否存在数组钟
console.log( data.findIndex(function(item,index,array){
return item[0] == "181";
// return item == ["181", 1, "局机关第二党支部", "1", true, Array(1)]+""; // 这个可以匹配数组
}));
// 返回搜索到的值在数组中的索引
console.log( $.inArray("181", data[1]) );
// 如果要查找一个一维数组在另一个多维数组是否存在,还是用遍历查询把。。。
// 遍历数组的几种方式【遍历在手,想咋整就咋整】
var len,len1;
var i,j;
for(i=0, len=data.length; i<len; i++) {
// console.log(data[i]);
for(j=0,len1 = data[i].length;j<len1;j++){
// console.log( data[i][j] );
}
}
// 参数:item数组中的当前项, index当前项的索引, array原始数组;不支持IE
data.forEach((item, index, array)=>{
// console.log(item);
});
// 参数:item数组中的当前项, index当前项的索引, array原始数组;支持return
data.map(function(item, index, array){
// console.log(item);
});
// 可以正确响应break、continue和return语句
for (var item of data) {
// console.log(item);
}
// some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
console.log( data.some( function( item, index, array ){
return item[1] == 1;
}));
// every()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
// 建议用于搜索、比较、查找方向
console.log( data.every( function( item, index, array ){
return item[3] == true;
}));
return true;
}
下面是多维数组去重;
edit();
function edit(){
var data = [
["30", 1, "联系组一", "1", true],
["30", 1, "联系组一", "1", true],
["31", 1, "联系组二", "1", true],
["180", 1,"局机关第一党支部", "1", true, Array(5)],
["180", 1,"局机关第一党支部", "1", true, Array(5)],
["181", 1,"局机关第二党支部", "1", true, Array(1)],
["182", 1,"局机关第三党支部", "1", true],
["183", 1,"局机关第四党支部", "1", true, Array(1)],
["184", 1,"局机关第五党支部", "1", true],
["185", 1,"局机关第六党支部", "1", true],
["186", 1,"局机关离退休第一党支部", "1", true],
["187", 1,"局机关离退休第二党支部", "1", true],
["188", 1,"局机关离退休第三党支部", "1", true]
];
方法一:
var res = [];
for( var item of data ){
var index = res.findIndex(function(value,index,array){
return item+"" == value+""; // 这里需要一维数组的比较,需要转字符串,否则数组格式比较不成立
});
if( index == -1 ){
res.push(item);
}
}
}
方法二:
var res = [];
for(var value of data){
res[value[0]] = value; // 这里因为第一列是主键,所以作为键值直接覆盖去重;
}
方法三:
var res = [];
for(var value of data){
res[value.join()] = value; //将所有内容转字符串,作为键值覆盖去重,比上面那步好,不用考虑主键;
}
终极大招:【一般做项目的,都会用到,很少会用数组去整合数据,因为数组不能以任意数据类型作为键值;】
js以任意字符串为键值,可以将各种数据进行处理;【定义对象的方式】
var a = {
'1':{"id":1,"name":"甘海彬1","sno":"20134087105"},
'2':{"id":2,"name":"甘海彬2","sno":"20134087106"},
'3':{"id":3,"name":"甘海彬3","sno":"20134087107"},
'4':{"id":4,"name":"甘海彬4","sno":"20134087108"},
'5':{"id":5,"name":"甘海彬5","sno":"20134087109"},
'6':{"id":6,"name":"甘海彬6","sno":"20134087110"},
'7':{"id":7,"name":"甘海彬7","sno":"20134087111"},
};
// 对象的增删改查,去重,遍历和数组差不多;
console.log(a['1'].id);
console.log(a);
对象的遍历一
index是索引
for(var index in a){
console.log(a[index]);
}
对象的遍历二
Object.keys(a).forEach(function (index) {
console.log(key,a[index]);
});