JS 数组操作集合

目录

一、JS 对象数组,根据对象中某个属性从大到小排序sort

二、数组去重

三、数组元素重复次数统计,并建立新对象记录元素和重复次数

四、判断单个元素在不在某个数组中

五、数组在最前面(最后面、指定位置)添加一条记录

六、JSON数组中移动某一项到最后

七、截断数组

8、获取数组中的最后几项

9、json数组,根据某两个属性值,属性值一样的去重,只取第一个值。



一、JS 对象数组,根据对象中某个属性从大到小排序sort

应用场景:一个对象数组,比如:

var arr = [{'name': '张三', age: 26},{'name': '李四', age: 12},{'name': '王五', age: 37},{'name': '赵六', age}]

      要求根据对象中某个字段(如age)由小到大排序。

实现:

arraySort:function(arr,sortfield){//var arr = [{'name': '张三', age: 26},{'name': '李四', age: 12},{'name': '王五', age: 37},{'name': '赵六', age: 4}]; var objectArraySort = function (keyName) {  return function (objectN, objectM) {   var valueN = objectN[keyName];   var valueM = objectM[keyName] ;  if (valueN < valueM) return 1;else if (valueN > valueM) return -1   else return 0  } } arr.sort(objectArraySort(sortfield)) ;return arr;},

二、数组去重

数组去重,详见文章:https://blog.csdn.net/happy81997/article/details/102561439

本文推荐几个去重效率高的方法

1、先sort排序后,再去重

​
function uniqueArray(arr) {const newArr = [];arr.sort();for (let i = 0; i < arr.length; i++) {if (arr[i] !==arr[i+1]) {newArr.push(arr[i])}}return newArr;
}​

2、通过ES6的map方法去重(重点推荐)

​
function uniqueArray(arr) {const newArr = [];const tmp = new Map();for (let i = 0; i < arr.length; i++) {if (!tmp.get(arr[i])) {tmp.set(arr[i], 1);newArr.push(arr[i])}}return newArr;
}​

3、通过ES6的set方法去重(重点推荐)

​
function uniqueArray(arr) {return Array.from(new Set(arr))
}​

4、ES6+展开操作(...)一起

const array = [1, 1, 2, 3, 5, 5, 1];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // Result: [1, 2, 3, 5]

三、数组元素重复次数统计,并建立新对象记录元素和重复次数

应用场景:使用一个对象,记录{ 元素,重复次数 }

//方法:使用obj记录重复的元素,以及出现的次数function getCount(arr) {var obj = {},k, arr1 = [];for(var i = 0, len = arr.length; i < len; i++) {k = arr[i];if(obj[k])obj[k]++;elseobj[k] = 1;}console.log(obj)//保存结果{el-'元素',count-出现次数}for(var o in obj) {arr1.push({el: o,count: obj[o]});}console.log(arr1);}getCount([4, 2, 2, 3, 1])

四、判断单个元素在不在某个数组中

方法一:  
in_Array:function(string,array){for( s=0;s

五、数组在最前面(最后面、指定位置)添加一条记录

5.1 在最后面添加一条记录:push

let myArray=[11,22,33];
myArray.push(44,55);

5.2 在最前面添加一条记录:unshiift

 myArray.unshift(66,77);  

输出结果:66,77,11,22,33

5.3 在指定位置添加一条记录:splice

myArray.splice(2,0,'指定位置') ;  //索引第三个位置,删除0个元素,添加“指定位置”这个值

splice()用法:

六、JSON数组中移动某一项到最后

应用场景:JSON数组中,需要把某一项移动的数组的最后位置

解决办法

先找到这个项,并记录下索引index,然后赋值给个中间变量,然后删除这一项,最后重新push进数组到最后位置即可。

myjson.map((item,index) =>{
if(item.name="要找的目标"){var val=item;myjson.splice(index,1)  //删除这一项myjson.push(val);    //重新添加到最后
}
})

七、截断数组

7.1 从头开始截断

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
array = array.slice(0, 4);
console.log(array); // Result: [0, 1, 2, 3]

8、获取数组中的最后几项

数组方法slice()可以接受负整数,如果提供它,它将接受数组末尾的值,而不是数组开头的值。

let array = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
console.log(array.slice(-1)); // Result: [9]
console.log(array.slice(-2)); // Result: [8, 9]
console.log(array.slice(-3)); // Result: [7, 8, 9]

9、json数组,根据某两个属性值,属性值一样的去重,只取第一个值。

var arr = [{from:'张三',
middle:'安徽',to: '河南'},{from:'王二',
middle:'安徽',to: '阿里'},{from:'李四',
middle:'山西',to: '杭州'},{from:'王二',
middle:'安徽',to: '山东'},
]
let newArr=[]
//根据form和middle值都一样的,去重取一个就行
// 终极写法arr.forEach((i) => {newArr.some((item) => item.from== i.from && item.middle== i.middle) ? '' : newArr.push(i);});


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部