数组元素互换位置 删除 上移一层 下移一层 置顶 置底
var widgets = [
{name: 'xxxx', age: 'xxx', ...},
....
]
// 元素互换位置
// arr 原数组 oldIndex 原数组的索引 newIndex 需要交换后的索引
swapArr(arr, oldIndex, newIndex) {
arr[oldIndex] = arr.splice(newIndex, 1, arr[oldIndex])[0];
return arr;
}
// 删除
deletelayer(widgets, index) {
return widgets.splice(arrIndex, 1);
}
// 复制
copylayer(widgets, index) {
const obj = JSON.stringify(JSON.parse(widgets[index]));
return widgets.splice(widgets.length, 0, obj);
}
// 置顶
istopLayer(widgets, index) {
if (index + 1 < widgets.length) {
const temp = widgets.splice(index, 1)[0];
widgets.push(temp);
}
return widgets
}
// 置底
setlowLayer(widgets, index) {
if (index != 0) {
widgets.unshift(widgets.splice(index, 1)[0]);
}
return widgets
}
// 上移一层
moveupLayer(widgets, index) {
if (index != 0) {
widgets[index ] = widgets.splice(
index - 1,
1,
widgets[index]
)[0];
} else {
widgets.push(widgets.shift());
}
return widgets
}
// 下移一层
movedownLayer(widgets, index) {
if (index != widgets.length - 1) {
widgets[index ] = widgets.splice(
index + 1,
1,
widgets[index]
)[0];
} else {
widgets.unshift(widgets.splice(index, 1)[0]);
}
return widgets
}
- 两个字段一个是用户的id 一个是用户的名称,需要把这两个字符转成数组再转成对象数组
var str1 = '小明,小兰,小钱'
var str2 = '12,13,15'
var str1Arr = str1.split(',')
var str2Arr = str2.split(',')
var result = str1Arr.map((val,i) => ({id: val, val: str2Arr[i]}));
2.两个数组arr1 = [ {id: “#11”, val: “徐xx”},{id: “#12”, val: “周xx”},{id: “#13”, val: “赵xx”},{id: “#14”, val: “郑xx”}] arr2 = [‘郑x’,17, ‘赵xx’, 15] ,arr2数组的元素是动态的不固定的,由arr2的值是否等于arr1的val值,如果arr2存在就保存arr1的id,不存在的话就保留arr2的值。
var arr1 = [
{id: "#11", val: "徐xx"},
{id: "#12", val: "周xx"},
{id: "#13", val: "赵xx"},
{id: "#14", val: "郑x"}
]
var arr2 = ['郑x',17, '赵xx', 15]
var arr3 = []
for(let i=0;i<arr1.length;i++) {
for(let j=0;j<arr2.length;j++) {
if(arr2[j] === arr1[i].val) {
arr3.push(arr1[i].id)
arr2.splice(j,1)
}
}
}
arr3.push(...arr2)
3.一个大数组拆成多个数组
groupArray(array, subGroupLength) {
let index = 0;
let newArray = [];
while(index < array.length) {
newArray.push(array.slice(index, index += subGroupLength));
}
return newArray;
}
4. 两个数组对象中查看 其中一个数组对象是否包含另一个数组对象中的值
let arr = [
{key:1,val:"张胜男"},
{key:2,val:"王五"},
{key:3,val:"李四"},
{key:4,val:"刘超"},
{key:5,val:"赵四"}
]
let arr2 = [
{key:1,val:"张胜男"},
{key:2,val:"王五"},
{key:6,val:"666"},
{key:7,val:"777"},
{key:8,val:"888"},
{key:9,val:"999"},
]
第一种:
for(let i=0;i<arr.length;i++){
const Index = arr2.findIndex((item) => {return item.key === arr[i].key})
console.log(Index); // 0、1、-1、-1、-1
// 前两个数据的key值相同,打印出对应的下标 ,后面找不相同的key 输出-1
}
第二种:
for(let task of arr){
const itemJson = arr2.find((item)=>{return item.key === task.key});
console.log(itemJson)
//{key: 1, val: "张胜男"}
//{key: 2, val: "王五"}
// 3 undefined
// 如果有相同的值那么就返回对应的对象 如果没有则返回 undefined
}