日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数组对象常用处理方案(算法思路)

發布時間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组对象常用处理方案(算法思路) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

(1)依據數組對象中某個值,將相同的對象合并成一個新對象

數據源是這樣的

beforeData: [{ name: "tony", id: "1", age: "20" },{ name: "jack", id: "2", age: "21" },{ name: "tony", id: "3", age: "50" },{ name: "jack", id: "4", age: "10" },{ name: "mark", id: "5", age: "22" },{ name: "mark", id: "6", age: "40" }]

要將數據中name相同的項合并成一個對象

afterData: [{name: "tony",origin: [{ name: "tony", id: "1", age: "20" },{ name: "tony", id: "3", age: "50" }]},{name: "jack",origin: [{ name: "jack", id: "2", age: "21" },{ name: "jack", id: "4", age: "10" }]},{name: "mark",origin: [{ name: "mark", id: "5", age: "22" },{ name: "mark", id: "6", age: "40" }]}]

實現:

let tempArr = [];for (let i = 0; i < this.beforeData.length; i++) {if (tempArr.indexOf(this.beforeData[i].name) === -1) {this.afterData.push({name: this.beforeData[i].name,origin: [this.beforeData[i]]});tempArr.push(this.beforeData[i].name);} else {for (let j = 0; j < this.afterData.length; j++) {if (this.afterData[j].name == this.beforeData[i].name) {this.afterData[j].origin.push(this.beforeData[i]);break;}}}}

(2)根據數組中對象的某一個屬性值進行排序

如下代碼,根據數組對象中的age進行排序

方式一:

var arr = [{name:'zopp',age:0},{name:'gpp',age:18},{name:'yjj',age:8} ];function compare(property){return function(a,b){var value1 = a[property];var value2 = b[property];return value1 - value2;} } console.log(arr.sort(compare('age')))

方式二:

students:[{name:'baibai',age:32},{name:'xiaobai',age:30},{name:'gufan',age:21},{name:'King',age:45} ]//數組對象方法排序: function sortByKey(array, key) {return array.sort(function(a, b) {var x = a[key];var y = b[key];return ((x < y) ? -1 : ((x > y) ? 1 : 0));}) }//將相應的數組對象傳入即可完成排序: sortByKey(students,age);

(3)數組的值大小排序

如下代碼,將數組中的值進行大小排序

let values = [1,2,3,6,4,8]; //小到大排序,如果需要由大到小,把返回的-1和1反過來就可以了 let compare = (x,y) => {if(x < y){return -1}else if(x > y){return 1;}else{return 0;} } console.log(values.sort(compare)); //[1, 2, 3, 4, 6, 8]

(4)數組中相同元素組合成一個新的數組

現在有一個這樣規律的數組,需求是把里面相同元素組合成一個新的數組;

arr=['1','1','1','2',,'3','4','5','5','6','6','7','8','9','9','10']

結果是這樣的

newArr = [ [ "1" , "1" , "1" ] , [ "2" ] , [] , [ "3" ] , [ "4" ] , [ "5" , "5" ] , [ "6" , "6" ] , [ "7" ] , [ "8" ] , [ "9" , "9" ] , [ "10" ] ]

實現方式:

var arr=['1','1','1','2',,'3','4','5','5','6','6','7', '8','9','9','10'];var newArr = [],tempArr = [];for(var i=0,j=arr.length;i<j;i++){if(arr[i] == arr[i+1]){tempArr.push(arr[i]);} else {tempArr.push(arr[i]);newArr.push(tempArr.slice(0));tempArr.length = 0;}}console.log(newArr);/*[ [ "1" , "1" , "1" ] , [ "2" ] , [] , [ "3" ] , [ "4" ] ,[ "5" , "5" ] , [ "6" , "6" ] , [ "7" ] , [ "8" ] , [ "9" , "9" ] , [ "10" ] ]*/

總結

以上是生活随笔為你收集整理的数组对象常用处理方案(算法思路)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。