vue2 中没有map 怎么取 对象数组的最大值?


对象数组
list: [{
icount: "61"
keyword_rank: "1"
keywords: "冷启动和热启动的区别"},
      {
icount: "62"
keyword_rank: "1"
keywords: "冷启动和热启动的区别"},
      {
icount: "63"
keyword_rank: "1"
keywords: "冷启动和热启动的区别"},
      {
icount: "64"
keyword_rank: "1"
keywords: "冷启动和热启动的区别"}
]

// 最大值
Math.max.apply(null, list.map(function (item) {return item.icount}))
// 最小值
Math.min.apply(null, list.map(function (item) {return item.icount}))



提示 map is not function 查百度 说是 vue1.0 有 map 2.0 没有map, 那2.0 要怎么取值?

虽然 Vue 2.x 没有 map 方法,但是你仍然可以使用 ES6 的 Array.prototype.map 方法来实现相同的功能。你可以这样写:

Math.max.apply(null, list.map(item => item.icount))
Math.min.apply(null, list.map(item => item.icount))

这里使用了箭头函数来简化代码。如果你不想使用箭头函数,也可以使用普通的函数来实现:

Math.max.apply(null, list.map(function(item) {
  return item.icount
}))
Math.min.apply(null, list.map(function(item) {
  return item.icount
}))

这些代码都可以在 Vue 2.x 中正常运行。

map是javascript内置的函数,跟vue没有任何关系。刚刚我试过了,vue2也能使用!

  • 你可以参考下这篇文章:解决vue打包后出现的.map文件
  • 除此之外, 这篇博客: vue2.0引用腾讯地图中的 创建map.vue 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • <template>
      <el-row>
        <div class="select-project">
          <el-input v-model="deviceName" placeholder="请输入设备名" style="width:250px" maxlength="30"></el-input>
          <el-button icon="el-icon-search" @click="search()">查找</el-button>
          <el-button style="float:right" size="small" type="primary" @click="toPath()">设备信息</el-button>
        </div>
        
        <div id="deviceMap" style="width:100%;height:700px;"><div class='numabs'>&nbsp;总设备数({{deviceData.length}})&nbsp;</div></div>
      </el-row>
    
    </template>
    
    <script>
    export default {
      name: "deviceMap",
      data() {
        return {
          deviceName:'',
          searchData:[],
          address: "",
          deviceData: [],
          markerArrays: []
        };
      },
      methods: {
        toPath() {
            this.$router.push("/equipment_main");
        },
        search() {
          this.$api.device
            .DeviceInfoList({ pageQuery: false, deviceName: this.deviceName })
            .then(res => {
              this.searchData = res.records;
              this.init();
            });
        },
        // 清除标记
        clearMarkers() {
          this.markerArrays.forEach(marker => {
            marker.setMap(null);
          });
        },
        // 信息窗
        infoWin(detail, map, myLatlng) {
          var that = this;
          var address = "";
          var geocoder = new qq.maps.Geocoder({
            complete: function(result) {
              infoWin.open();
              address =
                result.detail.nearPois[0].address + result.detail.nearPois[0].name;
              //tips  自定义内容
              infoWin.setContent(
                '<div style="width:300px;padding-top:5px;">' +
                  "设备:" +
                  detail.deviceName +
                  "</br>地址:" +
                  address +
                  "</br>经纬度:" +
                  detail.latitude +
                  " / " +
                  detail.longitude +
                  "</div>"
              );
              infoWin.setPosition(myLatlng);
            }
          });
          geocoder.getAddress(myLatlng);
          var infoWin = new qq.maps.InfoWindow({
            map: map
          });
        },
        // 添加标注
        markers(map) {
          // 地址逆解析
          var that = this;
          that.clearMarkers();
          var data = [];
          if (that.searchData.length > 0) {
            data = that.searchData;
          } else {
            data = that.deviceData;
          }
          for (let index = 0; index < data.length; index++) {
            const element = data[index];
            var myLatlng = new qq.maps.LatLng(element.latitude, element.longitude);
            // 添加标注
            var marker = new qq.maps.Marker({
              position: myLatlng,
              map: map
            });
            that.markerArrays.push(marker);
            that.infoWin(element, map, myLatlng, that.address);
          }
        },
        // 初始化地图
        init(deviceName) {
          var that = this;
          //定义工厂模式函数
          var myOptions = {
            zoom: 13, //设置地图缩放级别
            mapTypeId: qq.maps.MapTypeId.ROADMAP //设置地图样式详情参见MapType
          };
    
          //获取dom元素添加地图信息
          var map = new qq.maps.Map(
            document.getElementById("deviceMap"),
            myOptions
          );
    
          //添加比例尺
          var scaleControl = new qq.maps.ScaleControl({
            align: qq.maps.ALIGN.BOTTOM_LEFT,
            margin: qq.maps.Size(85, 15),
            map: map
          });
    
          //获取城市列表接口设置中心点
          var citylocation = new qq.maps.CityService({
            complete: function(result) {
              map.setCenter(result.detail.latLng);
            }
          });
    
          that.markers(map);
          citylocation.searchLocalCity();
        },
        getData() {
          this.$api.device.DeviceInfoList({ pageQuery: false }).then(res => {
            this.deviceData = res.records;
            this.init();
          });
        }
      },
      mounted() {
        this.getData();
      }
    };
    </script>