使用concat和sort来针对性处理数组内嵌套多数组,并根据条件来进行排序

最近项目中遇到这么一个需求,需要将数组中的多个数组根据字段排序,然后到页面中渲染。

初始数组是这样的

    var arr = [
            {
                arr1: [
                    {
                        name: ‘我是商品6‘,
                        sort: 6
                    },
                    {
                        name: ‘我是商品3‘,
                        sort: 3
                    }
                ],
                arr2: [
                    {
                        name: ‘我是商品5‘,
                        sort: 2
                    },
                    {
                        name: ‘我是商品1‘,
                        sort: 1
                    }
                ]
            },
            {
                arr1: [
                    {
                        name: ‘我是商品5‘,
                        sort: 5
                    }
                ],
                arr2: [
                    {
                        name: ‘我是商品4‘,
                        sort: 4
                    }
                ]
            }
        ]

这里需要根据sort字段来进行排序,从1到6

需求:

  1.将这个源数组重组成一个数组

        var o = []
        arr.forEach((item,index) => {
            o = o.concat(item.arr1,item.arr2)
            o.sort(function (a, b) {
                return a.sort - b.sort
            })
        })

  输出结果为:

  

  2.在arr数组每条数据中生成一个新数组

        arr.forEach((item,index) => {
            item.arr3 = [].concat(item.arr1,item.arr2)
            item.arr3.sort(function (a, b) {
                return a.sort - b.sort
            })
        })

  输出结果为:

这里有个值得注意的地方,concat可以将多个数组进行组合,但是不会对之前的数组进行改变,它会返回一个新数组

原文地址:https://www.cnblogs.com/qiuchuanji/p/11445409.html

时间: 2024-10-10 17:20:40

使用concat和sort来针对性处理数组内嵌套多数组,并根据条件来进行排序的相关文章

一个关于求数组内最大子数组的和的小程序以及一周总结

一个数组内有正数和负数,而且数组是循环的.求数组内最大子数组的和.要求数组是算法空间复杂度为O(1). 思路: 1.求出每个子数组的值,比较大小. 2.定义一个参数,为数组的长度. 3.构造另外的数组,使得是原数组的得到两个集合.比如a={1,2,3,4}.b={1,2,3,4,1,2,3,4}; 4.这样可以满足数组的循环,参数为原数组的长度. 代码如下: package zuida; import java.io.*; import java.util.Scanner; class qiu

C语言结构体数组内带字符数组初始化和赋值

1.首先定义结构体数组: typedef struct BleAndTspRmtCmd{ char terminal[3]; char note[3]; char rmtCmd[10]; char cmdPropt[24];}; BleAndTspRmtCmd为结构体名,可以通过这个结构体名定义其他结构体变量,struct BleAndTspRmtCmd variable: 或者定义结构体数组变量,struct BleAndTspRmtCmd variable[]: 2.或者定义全局结构体变量,

数组的concat reverse sort方法

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <script type="text/javascript"> 7 /* 8 concat() 9 连接两个或多个数组,并将数组返回 10 该方法不会对原数组产生影响 11 */ 12 var a=[1,2,3]; 13 v

使用函数指针,完成一个sort()函数,能对任何类型的数组元素进行排序: 回调函数 以及 memcpy ()原型实现

进来复习了一下C语言指针,一直没有写过太多关于函数指针的代码,而且对回调函数的理解一直都是在理论上,基本上没有太写过关于它的代码,进来得空,写了一个小程序加深下自己对回调函数和函数指针的理解. 问题描述: 编写一个sort()函数,使它能够对任何类型的数组元素进行排序. 下面是我写的代码: /* 使用函数指针的回调函数技巧,设计一个能排序int 和char 数组的sort()函数 */ #include<stdio.h> #include<stdlib.h> #include<

JS数组去重,js中数组(Array)的排序(sort)

JS数组去重 var ddd = [1,2,4,5,2, 222,1,5,6]; var uq = {}; var rq = []; for(var i=0; i<9; i++){ if(!uq[ddd[i]]){ uq[ddd[i]] = true; rq.push(ddd[i]); } } return rq; js中数组(Array)的排序(sort)注意事项 var arrDemo = new Array(); arrDemo[0] = 10; arrDemo[1] = 50; arrD

HTML-JS 数组 内置对象

[JS中的数组] 1.数组的基本概念? 数组是在内存空间中连续存储的一组有序数据的集合 元素在数组中的顺序,称为下标.可以使用下标访问数组的每个元素 2.如何声明一个数组 ① 使用字面量声明:var arr=[]; 在JS中,同一数组可以存储各种数据类型. 例如:var arr=[1,"2",true,4,{}]; ② 使用new关键字明,var arr= new Array(参数); >>>参数可以是: a.省略,表示创建一个空数组 b.参数为一个整数,表示声明一个

JS数组方法汇总 array数组元素的添加和删除

js数组元素的添加和删除一直比较迷惑,今天终于找到详细说明的资料了,先给个我测试的代码^-^ var arr = new Array(); arr[0] = "aaa"; arr[1] = "bbb"; arr[2] = "ccc"; //alert(arr.length);//3 arr.pop(); //alert(arr.length);//2 //alert(arr[arr.length-1]);//bbb arr.pop(); //al

js数组的操作及数组与字符串的相互转化

数组与字符串的相互转化 <script type="text/javascript">var obj="new1abcdefg".replace(/(.)(?=[^$])/g,"$1,").split(",");       //字符串转化为数组 var obj2 = "new2abcdefg".split("");                              

js中数组内置方法

var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4 indexOf() 搜索一个指定的元素的位置 arr.indexOf('C');//2 arr.indexOf('d');//-1,不存在返回-1 slice() 截取数组的部分长度,然后返回新的数组 arr.slice(0,3);//从开始索引0开始,到结束索引结束,但不包括结束索引,['A','B','C'] arr.slice(3);//从7开始到结束,['D''] push