js数组操作

数组元素互换位置 删除 上移一层 下移一层 置顶 置底

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
}
  1. 两个字段一个是用户的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
       }


  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值