前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将Js数组对象中的某个属性值升序排序,并指定数组中的某个对象移动到数组的最前面

将Js数组对象中的某个属性值升序排序,并指定数组中的某个对象移动到数组的最前面

作者头像
追逐时光者
发布2020-07-28 15:05:14
12K0
发布2020-07-28 15:05:14
举报
文章被收录于专栏:编程进阶实战

需求整理:

  本篇文章主要实现的是将一个数组的中对象的属性值通过升序的方式排序,然后能够让程序可以指定对应的数组对象移动到程序的最前面。

数组如下所示:

代码语言:javascript
复制
var arrayData= [{name: "夏明", Id:24}, {name: "小红", Id: 25},{name: "大袁", Id: 22},{name: "大姚", Id: 23},{name: "小芳", Id: 18}];  

首先把数组中的Id值通过升序的方式排序:

代码语言:javascript
复制
//源数组
var arrayData= [{name: "夏明", Id:24}, {name: "小红", Id: 25},{name: "大袁", Id: 22},{name: "大姚", Id: 23},{name: "小芳", Id: 18}];  

//重写排序方法
var compare = function (attribute) {
   return function (obj1, obj2) {
   var val1 = obj1[attribute];
   var val2 = obj2[attribute];
   if (val1 < val2) {
    return -1;
   } else if (val1 > val2) {
    return 1;
   } else {
    return 0;
   }  
   } 
  } 
var newArrayData=arrayData.sort(compare('Id'));//通过Id排序完成后的数组
console.log(newArrayData);

排序完成后输出的值:

代码语言:javascript
复制
[{ name: "大袁", Id: 22 },  { name: "大姚", Id: 23 }, { name: "夏明", Id: 24 },{ name: "小红", Id: 25 }]

找到Id为23的对象,移动到数组的最前面去(注意Id值唯一):

实现原理:因为移除数组对象需要找到对应数组对象的下标索引才能进行移除,现在我们需要移除Id=23的对象,让其排到最前面去(先找到对象下标,然后把给数组对象赋值给temporaryArry临时数组,然后在通过下标移除newArrayData中的该对象值,最后将arrayData等于temporaryArry.concat(newArrayData)重新渲染数组数据)。

代码实现:

代码语言:javascript
复制
//创建临时数组
var  temporaryArry=[];

//找到数组中Id=23的下标索引(从0开始)
let currentIdx=newArrayData.findIndex(v=>v.Id==23);
console.log('Id=23的索引值为:',currentIdx);

//把Id=23的对象赋值给临时数组
temporaryArry.push(newArrayData[currentIdx]);

//移除数组newArray中Id=23的对象
newArrayData.splice(currentIdx,1);//从start[一般为对象的索引]的位置开始向后删除delCount个元素

console.log('移除后的数据',newArrayData);

//重新渲染数组
newArrayData=temporaryArry.concat(newArrayData);	

console.log(newArrayData);

输出结果: 

代码语言:javascript
复制
[{ name: "大姚", Id: 23 }, { name: "小芳", Id: 18 }, { name: "大袁", Id: 22 }, { name: "夏明", Id: 24 },{ name: "小红", Id: 25 }]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求整理:
  • 数组如下所示:
  • 首先把数组中的Id值通过升序的方式排序:
    • 排序完成后输出的值:
    • 找到Id为23的对象,移动到数组的最前面去(注意Id值唯一):
      • 代码实现:
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档