一维数组转化二维数据

在做小程序的动态行程的时候,遇到一个数据处理的问题。景点之间有辆车信息。就选离景点最近的一辆车显示。数据格式如下

 var  array=[
        {
            type: 1,
            name: "吞白古茹日追",
            orignId: 217,

        },
        {
            terminalName: "藏GL0257",
            touristNum: 8,
            __res_type__: "BUS",
            NextorignId:231,
        },
        {
            terminalName: "藏GL0258",
            touristNum: 9,
            __res_type__: "BUS",
            NextorignId:231
        },
        {
            terminalName: "藏GL0232",
            touristNum: 9,
            __res_type__: "BUS",
            NextorignId:231
        },
        {
            type: 1,
            name: "达林南峰画屏观景点",
            orignId: 231,
        },
        {
            terminalName: "藏GL0259",
            touristNum: 9,
            __res_type__: "BUS",
            NextorignId:234
        },
        {
            terminalName: "藏GL0260",
            touristNum: 9,
            __res_type__: "BUS",
            NextorignId:234
        },
        {
            type: 1,
            name: "索宋村",
            orignId: 234,
        },
        {
            type: 1,
            name: "索松第一观景平台",
            orignId: 235,
        },

    ]
   //返回的结果
    var  result=[]
    //标记景点或者显示车辆
    var  key=0
    //临时存数据
    var  temp=[]
    for(var i = 0; i < array.length; i++){
        var  item=array[i]
        if(item.type){
            //每次遇到景点前面有车的情况都把原来的temp里面的数据都push到result
            if(key>=1){
                result.push(temp)
            }
            key=0
            temp=[]
            temp.push(item)
            result.push(temp)
            temp=[]
        }else {
            key=key+1
            temp.push(item)
            }
    }
    console.log(result)

//第二种方法
 //暂存的
    var arr = [];
    //结果
    var newarr = [];
    //是否车
    var v = false;
    for(var i = 0; i < array.length; i++){
        let  item=array[i]
        if(item.type){
            if(v){
                //景点
                newarr.push(arr);
                v=false;
                arr = []
                arr.push(item)

                newarr.push(arr)
                arr=[]
            }else{
                arr.push(item)
                newarr.push(arr)
                arr = []
            }
        }else{
            //车辆
            arr.push(item)
            v = true
        }
    }


result= [
        [
            {
                type: 1,
                name: "吞白古茹日追",
                orignId: 217,
            }

        ]
        ,
        [
            {
                terminalName: "藏GL0257",
                touristNum: 8,
                __res_type__: "BUS",
            },
            {
                terminalName: "藏GL0258",
                touristNum: 9,
                __res_type__: "BUS",
            },
            {
                terminalName: "藏GL0232",
                touristNum: 9,
                __res_type__: "BUS",
            }
        ],
        [
            {
                type: 1,
                name: "达林南峰画屏观景点",
                orignId: 231,

            }
        ],
        [
            {
                terminalName: "藏GL0259",
                touristNum: 9,
                __res_type__: "BUS",
            }
        ],
        [
            {
                type: 1,
                name: "索宋村",
                orignId: 234,
            }
        ],
        [
            {
                type: 1,
                name: "索松第一观景平台",
                orignId: 235,
            }
        ]

    ]


大功告成!!!

在Python中,可以使用多种方法将一维数组转换为二维数组。通常,这涉及到将一维数组分割成多个子数组,然后将这些子数组组合成二维数组。以下是几种常用的方法: 1. 使用列表推导式: 可以通过列表推导式和切片操作将一维数组分割成多个子数组,并将它们组合成一个二维数组。 ```python def one_to_two_dimensional(array, sub_length): return [array[i:i+sub_length] for i in range(0, len(array), sub_length)] ``` 2. 使用NumPy库: 如果你的项目中已经包含了NumPy库,那么可以非常简单地使用它来转换数组。NumPy是Python中用于科学计算的核心库,提供了多维数组对象和处理这些数组的工具。 ```python import numpy as np def numpy_one_to_two_dimensional(array, shape): return np.array(array).reshape(shape) ``` 在这里,`reshape` 方法用于将一维数组重塑为具有特定行数和列数的二维数组。 3. 使用`itertools`模块: `itertools`模块提供了一些工具函数,用于创建迭代器。使用`grouper`函数可以将一维迭代器转换为固定长度的块。 ```python from itertools import zip_longest def grouper(iterable, n, fillvalue=None): args = [iter(iterable)] * n return zip_longest(*args, fillvalue=fillvalue) one_dimensional_array = [1, 2, 3, 4, 5, 6] two_dimensional_array = list(grouper(one_dimensional_array, 2)) ``` `zip_longest` 函数会从每个输入的迭代器中取出相应的元素,组成元组,如果迭代器长度不一,则使用`fillvalue`填充。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值