成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法-創(chuàng)新互聯(lián)

小編給大家分享一下JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

在洛浦等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計,全網(wǎng)營銷推廣,外貿(mào)營銷網(wǎng)站建設(shè),洛浦網(wǎng)站建設(shè)費用合理。

今天給大家分享下最近web項目中出現(xiàn)的一個技術(shù)難點問題——坐標(biāo)排序;

如下圖所示,要求在前端頁面上按順序?qū)⑾旅?個模塊的坐標(biāo)依次保存至數(shù)據(jù)庫

JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法

現(xiàn)在已知信息如下:

1、每個模塊分別為一個div

2、每個div可隨意拖動(故拖動之后的順序是錯亂的)

3、每個div的坐標(biāo)(css絕對定位獲得的left、top屬性值)

現(xiàn)在已通過程序?qū)?個模塊div的坐標(biāo)信息用一個對象數(shù)組保存

var p = [
{ id: 184, x: 0, y: 0 },
{ id: 185, x: 320, y: 0 },
{ id: 186, x: 30, y: 60 },
{ id: 187, x: 150, y: 120 },
{ id: 188, x: 130, y: 80 },
{ id: 189, x: 100, y: 80 }
]

注:id為每個模塊唯一標(biāo)志符(本實例用于提交數(shù)據(jù)庫)

一、排序思考

1、排序規(guī)則如何制定?

客戶及項目負責(zé)人沒有具體說明規(guī)則,所以需要由技術(shù)人員按照技術(shù)方面的常規(guī)邏輯進行分析。

按照我們理解,上面5個div的正常情況下的順序應(yīng)該是:從上到下,從左到右

2、排序算法如何實現(xiàn)?

根據(jù)上面得出的排序規(guī)則,我們需要分別對兩點的y、x坐標(biāo)分別比較,確定出排序

A、從上到下:坐標(biāo)y越小,越排在前面

B、從左到右:坐標(biāo)x越小,越排在前面

C、優(yōu)先級為y坐標(biāo),若y坐標(biāo)相等,則x坐標(biāo)越小,越排在前面

二、代碼實現(xiàn)

1、兩點比較

我們先定義兩個坐標(biāo)點,編寫代碼進行比較

var p1 = { x: 350, y: 0 };
var p2 = { x: 320, y: 0 };

console.log(SetSortRule(p1, p2));

//兩個坐標(biāo)比較大小
function SetSortRule(p1, p2) {
  if (p1.y > p2.y) {
     return true;
   }
  else if (p1.y == p2.y) {
     return (p1.x > p2.x);
   }
  else {
     return false;
   }
}

關(guān)鍵代碼:SetSortRule(p1,p2)

p1,p2分別為需要比較的兩點對象

這樣一來,我們對于兩個點的排序就可以實現(xiàn)了,接下來就是對上面對象數(shù)組中的5個點進行排序。

2、多點比較

我們再來觀察下這5個點構(gòu)成的對象數(shù)組

var p = [
{ id: 184, x: 0, y: 0 },
{ id: 185, x: 320, y: 0 },
{ id: 186, x: 30, y: 60 },
{ id: 187, x: 150, y: 120 },
{ id: 188, x: 130, y: 80 },
{ id: 189, x: 100, y: 80 }
]

5個點對象兩兩比較,這里就得用到冒泡排序法

既然是冒泡排序,大家都應(yīng)該挺熟悉的吧,這里就不再細講,直接上代碼

 function SetSortPoint(arry) {
      var len = arry.length;
      for (var i = 0; i < len - 1; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
          if (SetSortRule(arry[j],arry[j + 1])) {
            var tmp = arry[j];
            arry[j] = arry[j + 1];
            arry[j + 1] = tmp;
          }
        }
      }
      console.log(arry);
    }

arry為對象數(shù)組(此實例為p對象數(shù)組)
SetSortRule(arry[j],arry[j + 1]),為兩個點進行比較

3、輸出效果

最終輸出結(jié)果如下圖,這里我就用瀏覽器console一下了

JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法

4、完整代碼如下

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title></title>
</head>
<body>
 <script type="text/javascript">
  var p = [
   { id: 184, x: 0, y: 0 },
   { id: 185, x: 320, y: 0 },
   { id: 186, x: 30, y: 60 },
   { id: 187, x: 150, y: 120 },
   { id: 188, x: 130, y: 80 },
   { id: 189, x: 100, y: 80 }
  ]
  SetSortPoint(p);

  function SetSortPoint(arry) {
   var len = arry.length;
   for (var i = 0; i < len - 1; i++) {
    for (var j = 0; j < len - 1 - i; j++) {
     if (SetSortRule(arry[j], arry[j + 1])) {
      var tmp = arry[j];
      arry[j] = arry[j + 1];
      arry[j + 1] = tmp;
     }
    }
   }
   console.log(arry);
  }

  //兩個坐標(biāo)比較大小
  function SetSortRule(p1, p2) {
   if (p1.y > p2.y) {
    return true;
   }
   else if (p1.y == p2.y) {
    return (p1.x > p2.x);
   }
   else {
    return false;
   }
  }
 </script>
</body>
</html>

以上是“JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站jinyejixie.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站名稱:JavaScript實現(xiàn)二維坐標(biāo)點排序效果的方法-創(chuàng)新互聯(lián)
本文地址:http://jinyejixie.com/article26/dphpjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、網(wǎng)站制作、ChatGPT網(wǎng)站維護、服務(wù)器托管、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
无极县| 望都县| 神木县| 安溪县| 罗平县| 江孜县| 万载县| 泊头市| 临夏县| 宝丰县| 五台县| 苗栗市| 醴陵市| 陵川县| 洪湖市| 永吉县| 渭源县| 通化县| 灵宝市| 改则县| 常州市| 博白县| 泽库县| 平罗县| 左云县| 雅安市| 巧家县| 阿克陶县| 英山县| 大关县| 宁蒗| 满洲里市| 永春县| 诏安县| 新沂市| 太康县| 兴宁市| 内乡县| 射阳县| 平泉县| 五华县|