关于对象遍历的时候的一些排序问题

简介: 关于对象遍历的时候的一些排序问题

有空就来看看吧,这些都是为你准备的。

先看下面的代码:

<template>
  <div class="wrap">
    <div v-for="(value, key) in mapData" :key="key">
      <p>key:{{key}},价格:{{mapData[key].price}}</p>
    </div>
  </div>
</template>
<script>
export default {
  data () {
    return {
      mapData:{
        1:{
          price:10,
          name:'我'
        },
        6:{
          price:20,
          name:'我'
        },
        2:{
          price:30,
          name:'我'
        }
      }
    }
  },
  mounted () {
    for(let i in this.mapData){
      console.log(this.mapData[i].price)
    }
  }
}
</script>

key都为number时

f0125ecb032840139b1d079794006ae3.png

d978557657a54310959dd503033aa55b.png

map中的key为number时,会根据key的的大小进行排序,但无论刷新多少次,输出都是一样的,所以输出是固定的,只是顺序和书写顺序不一样

number和string混和

mapData:{
        '我':{
          price:10,
          name:'我'
        },
        6:{
          price:20,
          name:'我'
        },
        2:{
          price:30,
          name:'我'
        }
      }

f3a382ae0b8641fc9a0086955a4411b2.png

为number和string混合时,优先number从小到大,再来string

mapData:{
        '1':{
          price:10,
          name:'我'
        },
        6:{
          price:20,
          name:'我'
        },
        2:{
          price:30,
          name:'我'
        }
      }

这种字符串1,在排序过程中会自动进行转换:

251705156a5d4dd0914e086f18b7621b.png

key为字母时

mapData:{
        a:{
          price:10,
          name:'我'
        },
        c:{
          price:20,
          name:'我'
        },
        b:{
          price:30,
          name:'我'
        }
      }

ebd0c73ed7ae40c4b54468a55e9e1573.png

为字母时不会重排顺序

字母、number、string混合

mapData:{
        'tc3':{
          price:0,
          name:'我'
        },
        a:{
          price:10,
          name:'我'
        },
        5:{
          price:20,
          name:'我'
        },
        1:{
          price:30,
          name:'我'
        },
        'tc1':{
          price:40,
          name:'我'
        },
        'tc2':{
          price:50,
          name:'我'
        }
      }

7318cb214ac24641a928b82466251fcd.png

可见先试把number的从小到大排了,再剩余的按顺序输出!

结果

对象结构会将number按从小到达顺序提前,再其他类型的key,按照书写顺序输出。

目录
相关文章
|
前端开发 JavaScript Java
基于cropper.js的图片上传和裁剪
基于cropper.js的图片上传和裁剪
505 0
|
9月前
|
API PHP
PHP 8新特性:Match表达式与联合类型实战指南
PHP 8新特性:Match表达式与联合类型实战指南
|
前端开发 API 数据处理
laravel系列(三) Dcat admin框架工具表单以及普通表单的使用
laravel系列(三) Dcat admin框架工具表单以及普通表单的使用
2115 0
|
JSON API PHP
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
Python/PHP:免费IP归属地查询接口和通过ip获取大致位置信息
1858 0
|
存储 算法 Shell
哈希表、哈希桶(C++实现)【STL】
哈希表、哈希桶(C++实现)【STL】
508 0
|
JavaScript
vue中关于element的el-image 图片预览功能增加一个下载按钮
vue中关于element的el-image 图片预览功能增加一个下载按钮
1858 0
Echarts——饼图折线图柱状图相互转换
Echarts——饼图折线图柱状图相互转换
906 0
|
前端开发 JavaScript
HTML DOM如何通过JavaScript动态改变元素的CSS样式?
【5月更文挑战第23天】HTML DOM如何通过JavaScript动态改变元素的CSS样式?
420 1
|
JavaScript 前端开发 容器
echarts 基础入门(上)
echarts 基础入门(上)
584 0
Element表格el-table固定表头且高度占满
本文目录 1. 固定表头 2. 占满高度 3. 使用vh占满高度 4. 动态调整高度
3221 0

热门文章

最新文章