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

資訊專(zhuān)欄INFORMATION COLUMN

some demos

Mr_houzi / 2140人閱讀

摘要:數(shù)組中連續(xù)的一個(gè)或多個(gè)整數(shù)組成一個(gè)子數(shù)組,每個(gè)子數(shù)組都有一個(gè)和。求所有子數(shù)組的和的最大值,要求時(shí)間復(fù)雜度為。輸出結(jié)果類(lèi)數(shù)組轉(zhuǎn)成數(shù)組直接遍歷這種方法是借用了數(shù)組原型中的方法,返回一個(gè)數(shù)組方法從一個(gè)類(lèi)似數(shù)組或可迭代對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。

import "../css/detail.css";

// 找到字符串中重復(fù)次數(shù)最多的字符
function findMax(str) {
  let maxChar = "";
  let maxValue = 1;

  if (!str.length) return;
  let arr = str.replace(/s/g, "").split("");
  let obj = {};
  for (let i = 0; i < arr.length; i++) {
    if (!obj[arr[i]]) {
      obj[arr[i]] = 1;
    } else {
      obj[arr[i]]++;
    }
  }
  let keys = Object.keys(obj);
  for (let j = 0; j < keys.length; j++) {
    if (obj[keys[j]] > maxValue) {
      maxValue = obj[keys[j]];
      maxChar = keys[j];
    }
  }

  return {
    maxChar, maxValue
  }
}

function findMax1() {
  let maxChar = "";
  let maxValue = 1;
  let h = {};
  if (!str.length) return;
  let arr = str.replace(/s/g, "").split("");
  for (let i = 0; i < arr.length; i++) {
    let a = arr[i];
    h[a] === undefined ? h[a] = 1 : h[a]++;
    if (h[a] > maxValue) {
      maxChar = a;
      maxValue = h[a];
    }
  }
  return {
    maxChar, maxValue
  }
}

function findMax2() {
  let maxChar = "";
  let maxValue = 1;
  if (!str.length) return;
  let arr = str.replace(/s/g, "").split("");
  let obj = arr.reduce((acc, curVal) => {
    acc[curVal] ? acc[curVal]++ : acc[curVal] = 1;
    if (acc[curVal] > maxValue) {
      maxChar = curVal;
      maxValue = acc[curVal];
    }
    return acc;
  }, {}) 
  return {
    maxChar, maxValue
  }
}
/* 
  d 任意一個(gè)數(shù)字,0~9 中的任意一個(gè)
  w 任意一個(gè)字母或數(shù)字或下劃線(xiàn),也就是 A~Z,a~z,0~9,_ 中任意一個(gè)
  s 包括空格、制表符、換頁(yè)符等空白字符的其中任意一個(gè)
. 小數(shù)點(diǎn)可以匹配除了換行符(
)以外的任意一個(gè)字符 
*/
function findMax3(str) {
  let maxChar = "";
  let maxValue = 1;
  if (!str.length) return;
  let arr = str.replace(/s/g, "").split("");
  let obj = {};
  str.replace(/s/g, "").replace(/(w)/g, (word, p) => {
    obj[p] ? obj[p]++ : obj[p] = 1;
    if (obj[p] > maxValue) {
      maxValue = obj[p];
      maxChar = p;
    }
  });
  return {
    maxChar, maxValue
  }

}

function findMax4(str) {
  let maxChar = "";
  let maxValue = 1;
  if (!str.length) return;
  let arr = str.replace(/s/g, "").split("");
  Array.prototype.getMost = function() {
    let obj = this.reduce((acc, cur) => {
      acc[cur] ? acc[cur]++ : acc[cur] = 1;
      acc.max = acc[cur] > acc.max ? acc[cur] : acc.max;
      acc.key = acc[cur] > acc.max ? cur : acc.key;
      return acc;
    }, {});
    return obj;
  }
  // return arr.getMost();
}

const str = "this is a test 222222 ts project. skajdf; 222sldjfwel p"
const reducer = (accumulator, currentValue, b, c) => {
  let obj = {};
  obj[b] = currentValue;
  return obj;
}
const array1 = [1, 2, 3, 4];
// console.log(array1.reduce(reducer));

console.log(findMax(str));
console.log("findMax1", findMax4(str));
/**
 * 輸入一個(gè)整形數(shù)組,數(shù)組里有正數(shù)也有負(fù)數(shù)。數(shù)組中連續(xù)的一個(gè)或多個(gè)整數(shù)組成一個(gè)子數(shù)組,每個(gè)子數(shù)組都有一個(gè)和。 求所有子數(shù)組的和的最大值,要求時(shí)間復(fù)雜度為O(n)。
 */
function findMaxSubArr(arr) {
  console.log(arr)
  let max = arr[0];
  let currSum = 0;
  for (let i = 0; i < arr.length; i++) {
    if (currSum < 0) {
      currSum = arr[i];
    } else {
      currSum += arr[i]; 
    }
    if (currSum > max) {
      max = currSum;
    }
  }
  return max;
}

// console.log("maxsubarr", findMaxSubArr([1, -2, 3, 10, -4, 7, 2, -5]));
// 輸出結(jié)果
console.log("begin");
setTimeout(() => {
  console.log("settimeout 1")
  Promise.resolve().then( () => {
    console.log("promise 1")
    setTimeout(() => {
      console.log("settimeout 2");
    });
  }).then(() => {
    console.log("promise 2");
  })
}, 0);
console.log("end");
/**
 * 類(lèi)數(shù)組轉(zhuǎn)成數(shù)組
 */
const nodes = document.querySelectorAll("div");
// nodes.map(item => {});

// 1.for直接遍歷

// 2.這種方法是借用了數(shù)組原型中的slice方法,返回一個(gè)數(shù)組
Array.prototype.slice.call(nodes).map(item => {});
[].slice.call(nodes).map(item => {console.log()});

// 3.Array.from() 方法從一個(gè)類(lèi)似數(shù)組或可迭代對(duì)象中創(chuàng)建一個(gè)新的數(shù)組實(shí)例。
Array.from(nodes).map(item => {})

// 4.同樣是ES6中新增的內(nèi)容,擴(kuò)展運(yùn)算符(…)也可以將某些數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)為數(shù)組
const nodeList = [...nodes];
function getlist(a,b,c,d) {
  // console.log(arguments);
  // console.log([...arguments][0])
}
getlist(11, 2, 3, 4);
// 使用reduce方法實(shí)現(xiàn)forEach、map、filter
const arr1 = [12, 21, 3];
const arr2 = arr1.map(function(item) {
  // console.log(this, item)
  return item*2
}, { msg: "mapping" })
// console.log(arr1, arr2)
// github上的
Array.prototype.selfMap = function () {
  const ary = this
  const result = []
  const [ fn, thisArg ] = [].slice.call(arguments)
  if (typeof fn !== "function") {
    throw new TypeError(fn + "is not a function")  
  }
  for (let i = 0; i < ary.length; i++) {
    result.push(fn.call(thisArg, ary[i], i, ary))
  }
  return result
}

Array.prototype.reduceMap = function (fn, thisArg) {
  // return (list) => {
      // 不怎么愿意寫(xiě)下面這兩個(gè)判斷條件
      const list = this
      if (typeof fn !== "function") {
          throw new TypeError(fn + "is not a function")  
      }
      if (!Array.isArray(list)) {
          throw new TypeError("list must be a Array")
      }
      if (list.length === 0) return []
      return list.reduce((acc, value, index) => {
          return acc.concat([ fn.call(thisArg, value, index, list) ])
      }, [])
  // }
}
// mine
Array.prototype.imitateMap = function () {
  const list = this;
  const result = []
  const [fn, thisArg] = [].slice.call(arguments)
  if (typeof fn !== "function") {
    throw new TypeError(fn + "is not a function");
  }
  for (let i = 0; i < list.length; i++) {
    result.push(fn.call(thisArg, list[i], i, list));
  }
  return result;
}

Array.prototype.imitateReduceMap = function () {
  const list = this;
  const result = []
  const [fn, thisArg] = [].slice.call(arguments)
  if (typeof fn !== "function") {
    throw new TypeError(fn + "is not a function");
  }
  if (!Array.isArray(list)) {
    throw new TypeError(list + "is not a Array");
  }
  return list.reduce((acc, curValue, index) => {
    return acc.concat([fn.call(thisArg, curValue, index, list)]);
  }, [])
}
const imitateReduceMap1 = function (fn, thisArg) {
  return (list) => {
    const result = []
    if (typeof fn !== "function") {
      throw new TypeError(fn + "is not a function");
    }
    if (!Array.isArray(list)) {
      throw new TypeError(list + "is not a Array");
    }
    return list.reduce((acc, curValue, index) => {
      return acc.concat([fn.call(thisArg, curValue, index, list)]);
    }, [])
  }
}

console.log("imitateMap", arr1, arr1.imitateMap(function(item) {
  console.log("imitateMap this", this)
  return item + 1
}, { msg: "mapping" }) )
console.log("imitateReduceMap", [ 1, 2, 3 ].imitateReduceMap(x => x + 1));
console.log("imitateReduceMap1", imitateReduceMap1(x => x + 1)([ 1, 2, 3 ]));
/**
 * 實(shí)現(xiàn)repeat方法
 */
function repeat(func, times, wait) {
  return (str) => {
    let count = 0;
    const timer = setInterval(() => {
      if (count < times) {
        // func.call(this, str);
        count++;
      } else {
        clearInterval(timer);
      }
      
    }, wait);
  }
}

const repeatFunc = repeat(alert, 3, 2000)

repeatFunc("helloworld");
/**
 * 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的雙向綁定
 * 1.發(fā)布-訂閱模式
 * 2.臟值檢測(cè)
 * 3.數(shù)據(jù)劫持
 * Vue.js 采用的是 數(shù)據(jù)劫持+發(fā)布/訂閱模式 的方式,通過(guò) Object.defineProperty() 來(lái)劫持各個(gè)屬性的 setter/getter, 在數(shù)據(jù)變動(dòng)時(shí)發(fā)布消息給訂閱者(Wacther), 觸發(fā)相應(yīng)的監(jiān)聽(tīng)回調(diào)
 */
// 基于Object.defineProperty 實(shí)現(xiàn)數(shù)據(jù)劫持,利用了對(duì)Vue.js實(shí)現(xiàn)雙向綁定的思想
const obj = {}
Object.defineProperty(obj, "txt",{
  get:function(){
    return obj
  },
  set:function(newValue){
    document.getElementById("txt").value = newValue
    document.getElementById("show-txt").innerHTML = newValue
  }
})
document.addEventListener("keyup", function(e){
  obj.txt = e.target.value
})

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

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

相關(guān)文章

  • socket.io+express多房間聊天應(yīng)用

    摘要:簡(jiǎn)介是一個(gè)開(kāi)源的庫(kù),它通過(guò)實(shí)現(xiàn)服務(wù)端,同時(shí)也提供客戶(hù)端庫(kù)。支持以事件為基礎(chǔ)的實(shí)時(shí)雙向通訊,它可以工作在任何平臺(tái)瀏覽器或移動(dòng)設(shè)備。 socket.io簡(jiǎn)介 Socket.IO是一個(gè)開(kāi)源的WebSocket庫(kù),它通過(guò)Node.js實(shí)現(xiàn)WebSocket服務(wù)端,同時(shí)也提供客戶(hù)端JS庫(kù)。Socket.IO支持以事件為基礎(chǔ)的實(shí)時(shí)雙向通訊,它可以工作在任何平臺(tái)、瀏覽器或移動(dòng)設(shè)備。Socket.IO...

    roadtogeek 評(píng)論0 收藏0
  • 使用 Flask-Docs 自動(dòng)生成 Api 文檔

    摘要:影響我寫(xiě)文檔的原因可能是代碼和文檔分離,有時(shí)候?qū)懲甏a會(huì)忘記補(bǔ)文檔,而且不能及時(shí)查看,使用可以解決我的問(wèn)題,這個(gè)插件可以根據(jù)代碼注釋生成文檔頁(yè)面,代碼注釋改動(dòng)文檔可以及時(shí)更新,而且支持離線(xiàn)文檔下載。 影響我寫(xiě)文檔的原因可能是代碼和文檔分離,有時(shí)候?qū)懲甏a會(huì)忘記補(bǔ)文檔,而且不能及時(shí)查看,使用 Flask-Docs 可以解決我的問(wèn)題,這個(gè)插件可以根據(jù)代碼注釋生成文檔頁(yè)面,代碼注釋改動(dòng)文檔可...

    鄒強(qiáng) 評(píng)論0 收藏0
  • js數(shù)組的方法

    摘要:向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度。刪除并返回?cái)?shù)組的最后一個(gè)元素。遍歷數(shù)組方法用于連接兩個(gè)或多個(gè)數(shù)組。該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。 arr.push() //向數(shù)組的末尾添加一個(gè)或多個(gè)元素,并返回新的長(zhǎng)度。 arr.pop() //刪除并返回?cái)?shù)組的最后一個(gè)元素。 arr.unshift() //向數(shù)組的開(kāi)頭添加一個(gè)或更多元素,并返回新的...

    selfimpr 評(píng)論0 收藏0
  • js數(shù)組詳解

    摘要:將對(duì)原來(lái)的數(shù)組進(jìn)行反轉(zhuǎn),并返回改變后的數(shù)組,其會(huì)改變?cè)瓟?shù)組的值。一個(gè)參數(shù)時(shí)返回該參數(shù)指定的位置到當(dāng)前數(shù)組末尾的所有項(xiàng)。對(duì)數(shù)組的每一項(xiàng)運(yùn)行給定的函數(shù),沒(méi)有返回值。測(cè)試有過(guò)濾篩選的含義,接收一個(gè)有返回值為弱的函數(shù),最后返回一個(gè)過(guò)濾后的新數(shù)組。 數(shù)組初認(rèn)識(shí) Array是js中的引用數(shù)據(jù)類(lèi)型,除了Object外,Array幾乎是ECMAScript中最常用的數(shù)據(jù)類(lèi)型了。 js中的數(shù)組與其他語(yǔ)言...

    dmlllll 評(píng)論0 收藏0
  • 深入理解行內(nèi)元素的布局

    摘要:看上面的例子我們也能看出來(lái),實(shí)際上一個(gè)內(nèi)聯(lián)元素是有兩個(gè)高度的高度實(shí)際渲染的那個(gè)高度和高度實(shí)際區(qū)域占空間的高度也就是。 前言 總括: 本文通過(guò)實(shí)例講解CSS中最大的難點(diǎn)之一,行內(nèi)元素的布局,主要是挖掘line-height和vertical-align兩個(gè)屬性在布局方面的使用。 原文博客地址:深入理解行內(nèi)元素的布局 知乎專(zhuān)欄&&簡(jiǎn)書(shū)專(zhuān)題:前端進(jìn)擊者(知乎)&&前端進(jìn)擊者(簡(jiǎn)書(shū)) 博...

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

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

0條評(píng)論

閱讀需要支付1元查看
<