国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

javascript實現PHP字典排序ksort

happyhuangjinjin / 1804人閱讀

摘要:實現字典排序當前規定要進行排序的數組規定如何排列數組的元素項目上面寫好字典排序方法,然后進行調用騰訊開放平臺示例僅供參考最后,字典排序后的順序為

/**
 * javascript實現PHP字典排序
 * @param {Object} vm 當前this
 * @param {Array} inputArr 規定要進行排序的數組
 * @param {String} sort_flags 規定如何排列數組的元素/項目
 */
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;
}
上面寫好字典排序方法ksort,然后進行調用
let aa = ksort(
  this,
  {
    "app_id": "10000",
    "time_stamp":"1493449657",
    "nonce_str":"20e3408a79",
    "key1":"騰訊AI開放平臺",
    "key2":"示例僅供參考",
    "sign":""
  }
)
最后,字典排序后的順序為:

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31300.html

相關文章

  • javascript實現PHP字典排序ksort

    摘要:實現字典排序當前規定要進行排序的數組規定如何排列數組的元素項目上面寫好字典排序方法,然后進行調用騰訊開放平臺示例僅供參考最后,字典排序后的順序為 /** * javascript實現PHP字典排序 * @param {Object} vm 當前this * @param {Array} inputArr 規定要進行排序的數組 * @param {String} sort_fla...

    gekylin 評論0 收藏0
  • javascript實現騰訊AI開放平臺,調用API時的接口鑒權,生成sign合法簽名

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

    crelaber 評論0 收藏0
  • PHP標準庫SPL學習之數據結構、常用迭代器、基礎接口

    摘要:將數組或者集合中的全部或者一部數據取出來,用迭代器比較方便迭代器能陸續遍歷幾個迭代器按順序迭代訪問幾個不同的迭代器。 一、SPL簡介 ?????什么是SPL PHP的標準庫SPL:Standard PHP Library ?????SPL: 用于解決常見普遍問題的一組接口與類的集合 ?????Common Problem: 數學建模/數據結構 解決數據怎么存儲的問題 元素遍歷 ...

    2i18ns 評論0 收藏0
  • 支付開發填坑記之支付寶

    摘要:原文地址支付支付步驟為獲取支付寶的配置信息。將得到的數據請求支付寶客戶端進行支付。端將拼接好的字符串拿去請求支付寶客戶端即可調起支付寶進行支付。向支付寶申請新訂單,獲取支付。成功請求回來后,就可以向支付寶發出一次支付請求。 支付寶在所有支付方式中最好開發的了,因為文檔比較清晰,而且開發起來也比較簡單。因此,支付寶的坑是相對較少的。原文地址 APP支付 APP支付步驟為: 獲取支付寶的...

    chanjarster 評論0 收藏0
  • 10個必須掌握的PHP關聯數組使用技巧

    摘要:額外的數組元素可以象下面這樣追加如果你正在處理數字索引數組,你可能想使用顯示命名的函數前置和追加元素,如和函數,但這些函數不能操作關聯數組。 在使用 PHP 進行開發的過程中,或早或晚,您會需要創建許多相似的變量,這時候你可以把數據作為元素存儲在數組中。數組中的元素都有自己的 ID,因此可以方便地訪問它們。 關聯數組 關聯數組,它的每個 ID 鍵都關聯一個值。在存儲有關具體命名的值的數...

    bawn 評論0 收藏0

發表評論

0條評論

happyhuangjinjin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<