成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript實(shí)現(xiàn)PHP字典排序ksort

happyhuangjinjin / 1835人閱讀

摘要:實(shí)現(xiàn)字典排序當(dāng)前規(guī)定要進(jìn)行排序的數(shù)組規(guī)定如何排列數(shù)組的元素項(xiàng)目上面寫(xiě)好字典排序方法,然后進(jìn)行調(diào)用騰訊開(kāi)放平臺(tái)示例僅供參考最后,字典排序后的順序?yàn)?/p>

/**
 * javascript實(shí)現(xiàn)PHP字典排序
 * @param {Object} vm 當(dāng)前this
 * @param {Array} inputArr 規(guī)定要進(jìn)行排序的數(shù)組
 * @param {String} sort_flags 規(guī)定如何排列數(shù)組的元素/項(xiàng)目
 */
export function ksort(vm, inputArr, sort_flags) {
  //  discuss at: http://phpjs.org/functions/ksort/
  // original by: GeekFG (http://geekfg.blogspot.com)
  // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
  // improved by: Brett Zamir (http://brett-zamir.me)
  //        note: The examples are correct, this is a new way
  //        note: This function deviates from PHP in returning a copy of the array instead
  //        note: of acting by reference and returning true; this was necessary because
  //        note: IE does not allow deleting and re-adding of properties without caching
  //        note: of property position; you can set the ini of "phpjs.strictForIn" to true to
  //        note: get the PHP behavior, but use this only if you are in an environment
  //        note: such as Firefox extensions where for-in iteration order is fixed and true
  //        note: property deletion is supported. Note that we intend to implement the PHP
  //        note: behavior by default if IE ever does allow it; only gives shallow copy since
  //        note: is by reference in PHP anyways
  //        note: Since JS objects" keys are always strings, and (the
  //        note: default) SORT_REGULAR flag distinguishes by key type,
  //        note: if the content is a numeric string, we treat the
  //        note: "original type" as numeric.
  //  depends on: i18n_loc_get_default
  //  depends on: strnatcmp
  //   example 1: data = {d: "lemon", a: "orange", b: "banana", c: "apple"};
  //   example 1: data = ksort(data);
  //   example 1: $result = data
  //   returns 1: {a: "orange", b: "banana", c: "apple", d: "lemon"}
  //   example 2: ini_set("phpjs.strictForIn", true);
  //   example 2: data = {2: "van", 3: "Zonneveld", 1: "Kevin"};
  //   example 2: ksort(data);
  //   example 2: $result = data
  //   returns 2: {1: "Kevin", 2: "van", 3: "Zonneveld"}

  var tmp_arr = {},
    keys = [],
    sorter, i, k, that = vm,
    strictForIn = false,
    populateArr = {};

  switch (sort_flags) {
    case "SORT_STRING":
      // compare items as strings
      sorter = function (a, b) {
        return that.strnatcmp(a, b);
      };
      break;
    case "SORT_LOCALE_STRING":
      // compare items as strings, original by the current locale (set with  i18n_loc_set_default() as of PHP6)
      var loc = vm.i18n_loc_get_default();
      sorter = vm.php_js.i18nLocales[loc].sorting;
      break;
    case "SORT_NUMERIC":
      // compare items numerically
      sorter = function (a, b) {
        return ((a + 0) - (b + 0));
      };
      break;
    // case "SORT_REGULAR": // compare items normally (don"t change types)
    default:
      sorter = function (a, b) {
        var aFloat = parseFloat(a),
          bFloat = parseFloat(b),
          aNumeric = aFloat + "" === a,
          bNumeric = bFloat + "" === b;
        if (aNumeric && bNumeric) {
          return aFloat > bFloat ? 1 : aFloat < bFloat ? -1 : 0;
        } else if (aNumeric && !bNumeric) {
          return 1;
        } else if (!aNumeric && bNumeric) {
          return -1;
        }
        return a > b ? 1 : a < b ? -1 : 0;
      };
      break;
  }

  // Make a list of key names
  for (k in inputArr) {
    if (inputArr.hasOwnProperty(k)) {
      keys.push(k);
    }
  }
  keys.sort(sorter);

  // BEGIN REDUNDANT
  vm.php_js = vm.php_js || {};
  vm.php_js.ini = vm.php_js.ini || {};
  // END REDUNDANT
  strictForIn = vm.php_js.ini["phpjs.strictForIn"] && vm.php_js.ini["phpjs.strictForIn"].local_value && vm.php_js
    .ini["phpjs.strictForIn"].local_value !== "off";
  populateArr = strictForIn ? inputArr : populateArr;

  // Rebuild array with sorted key names
  for (i = 0; i < keys.length; i++) {
    k = keys[i];
    tmp_arr[k] = inputArr[k];
    if (strictForIn) {
      delete inputArr[k];
    }
  }
  for (i in tmp_arr) {
    if (tmp_arr.hasOwnProperty(i)) {
      populateArr[i] = tmp_arr[i];
    }
  }

  return strictForIn || populateArr;
}
上面寫(xiě)好字典排序方法ksort,然后進(jìn)行調(diào)用
let aa = ksort(
  this,
  {
    "app_id": "10000",
    "time_stamp":"1493449657",
    "nonce_str":"20e3408a79",
    "key1":"騰訊AI開(kāi)放平臺(tái)",
    "key2":"示例僅供參考",
    "sign":""
  }
)
最后,字典排序后的順序?yàn)椋?/pre>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/31300.html

相關(guān)文章

  • javascript實(shí)現(xiàn)PHP字典排序ksort

    摘要:實(shí)現(xiàn)字典排序當(dāng)前規(guī)定要進(jìn)行排序的數(shù)組規(guī)定如何排列數(shù)組的元素項(xiàng)目上面寫(xiě)好字典排序方法,然后進(jìn)行調(diào)用騰訊開(kāi)放平臺(tái)示例僅供參考最后,字典排序后的順序?yàn)? /** * javascript實(shí)現(xiàn)PHP字典排序 * @param {Object} vm 當(dāng)前this * @param {Array} inputArr 規(guī)定要進(jìn)行排序的數(shù)組 * @param {String} sort_fla...

    gekylin 評(píng)論0 收藏0
  • javascript實(shí)現(xiàn)騰訊AI開(kāi)放平臺(tái),調(diào)用API時(shí)的接口鑒權(quán),生成sign合法簽名

    摘要:整個(gè)流程圖在網(wǎng)上查了很多,但看到有人用前端做騰訊開(kāi)放平臺(tái),生成簽名的,所以閑著就自己弄了一下。這樣就可以請(qǐng)求騰訊開(kāi)放平臺(tái)上的。注意如果使用身份證接口,字段是的的時(shí)候,格式問(wèn)題不需要前面。 整個(gè)流程圖 showImg(https://segmentfault.com/img/bVbrHpe?w=745&h=924); 在網(wǎng)上查了很多,但看到有人用javascript前端做騰訊AI開(kāi)放平臺(tái)...

    crelaber 評(píng)論0 收藏0
  • PHP標(biāo)準(zhǔn)庫(kù)SPL學(xué)習(xí)之?dāng)?shù)據(jù)結(jié)構(gòu)、常用迭代器、基礎(chǔ)接口

    摘要:將數(shù)組或者集合中的全部或者一部數(shù)據(jù)取出來(lái),用迭代器比較方便迭代器能陸續(xù)遍歷幾個(gè)迭代器按順序迭代訪問(wèn)幾個(gè)不同的迭代器。 一、SPL簡(jiǎn)介 ?????什么是SPL PHP的標(biāo)準(zhǔn)庫(kù)SPL:Standard PHP Library ?????SPL: 用于解決常見(jiàn)普遍問(wèn)題的一組接口與類(lèi)的集合 ?????Common Problem: 數(shù)學(xué)建模/數(shù)據(jù)結(jié)構(gòu) 解決數(shù)據(jù)怎么存儲(chǔ)的問(wèn)題 元素遍歷 ...

    2i18ns 評(píng)論0 收藏0
  • 支付開(kāi)發(fā)填坑記之支付寶

    摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數(shù)據(jù)請(qǐng)求支付寶客戶端進(jìn)行支付。端將拼接好的字符串拿去請(qǐng)求支付寶客戶端即可調(diào)起支付寶進(jìn)行支付。向支付寶申請(qǐng)新訂單,獲取支付。成功請(qǐng)求回來(lái)后,就可以向支付寶發(fā)出一次支付請(qǐng)求。 支付寶在所有支付方式中最好開(kāi)發(fā)的了,因?yàn)槲臋n比較清晰,而且開(kāi)發(fā)起來(lái)也比較簡(jiǎn)單。因此,支付寶的坑是相對(duì)較少的。原文地址 APP支付 APP支付步驟為: 獲取支付寶的...

    chanjarster 評(píng)論0 收藏0
  • 10個(gè)必須掌握的PHP關(guān)聯(lián)數(shù)組使用技巧

    摘要:額外的數(shù)組元素可以象下面這樣追加如果你正在處理數(shù)字索引數(shù)組,你可能想使用顯示命名的函數(shù)前置和追加元素,如和函數(shù),但這些函數(shù)不能操作關(guān)聯(lián)數(shù)組。 在使用 PHP 進(jìn)行開(kāi)發(fā)的過(guò)程中,或早或晚,您會(huì)需要?jiǎng)?chuàng)建許多相似的變量,這時(shí)候你可以把數(shù)據(jù)作為元素存儲(chǔ)在數(shù)組中。數(shù)組中的元素都有自己的 ID,因此可以方便地訪問(wèn)它們。 關(guān)聯(lián)數(shù)組 關(guān)聯(lián)數(shù)組,它的每個(gè) ID 鍵都關(guān)聯(lián)一個(gè)值。在存儲(chǔ)有關(guān)具體命名的值的數(shù)...

    bawn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<