JavaScript
FWodong
梦想还是要有的,说不定睡醒了呢
展开
-
立即拿到setState值
有这样的场景:在做react开发的时候,使用setState时,需要拿到最新的state的值,或者打印出最新的state,但是每次打印出来的是上一次的state,而不是最新的。可以使用如下方法:// 封装一个公用方法:useSyncCallback.jsimport { useEffect, useState, useCallback } from 'react';// 解决useState导致的只能拿到lastRenderedState问题const useSyncCallback = cal原创 2022-04-19 15:53:00 · 968 阅读 · 0 评论 -
关于页面刷新
页面刷新,最好不要使用location.replace()…等方式,可以使用以下方式,只是数据刷新,页面不会发生闪动重新请求数据const {cursor, setData, concatData, getData} = props || {};// ...return fetch( req.pathname + // 本页面的url,也可以使用location.href '?' + qs.stringify({ jsononly: 1,原创 2022-04-18 10:59:20 · 873 阅读 · 0 评论 -
需要判断当前页面可见
let pageVisibility = document.visibilityState;document.addEventListener('visibilitychange', function() { // 页面变为可见时触发 if (pageVisibility === 'visible' && !document.hidden) { resetResult(); }});原创 2022-04-18 10:56:01 · 459 阅读 · 0 评论 -
React + swiper
React + swiper“react-id-swiper”: “^1.6.8”import Swiper from 'react-id-swiper';import 'react-id-swiper/src/styles/css/swiper.css';问题:直接使用swiper,属性设置为「loop: true」 + 并且有点击事件时:<Swiper {...swiperParams}> {completion_context.map((item, index) =&原创 2022-04-18 10:49:30 · 1197 阅读 · 0 评论 -
type = ‘module‘ 使用模块化开发遇到的问题
在使用模块化开发的时候,遇到跨域的问题。代码为<!-- 注意:在这里使用的是模块化开发,所以type要给值为module --><script type="module" src="./js/index.js"></script>出现的错误:原因是:html使用type = ‘module’ 默认会产生跨域请求,本地打开的文件,file协议不支持解决办法:vscode下载插件 live server运行的时候选择 open with live se原创 2021-03-12 10:25:53 · 7227 阅读 · 0 评论 -
indexOf、includes等能否用于二维数组
let a = [[1,3], [2,4], [2,3]]let b = [2,4]let c = a.indexOf(b)输出:c = -1c = a.includes(b)输出:false原因是[....] == [....] 为false而api内部在比较的时候,是比较两个item是否相等,两个相同的对象,不一定相等,除非 引用相同 & 元素相同...原创 2021-03-11 07:59:16 · 1578 阅读 · 0 评论 -
在html文件中用 script 标签加的程序不执行
自己用node写demo的时候遇到的我的原程序是:<script src=""> $('#login_form').on('submit', function (e) { e.preventDefault() var formData = $(this).serialize() console.log(formData) $.ajax({ url:原创 2020-10-25 10:19:00 · 4816 阅读 · 0 评论 -
将一套使用i18n的国际化项目,改成三套不使用i18n的国际化项目
啥都不多说了,将一套中、英、法的项目,改成三套,分别是中文的、英文的、法文的首先第一步,就是给切换语言的按钮加方法,控制语言的改变;其次,捕获到当前的语言;然后,执行router的index.js,在url中加上当前的语言,并且,渲染对应语言的home页面;最后,将所有的页面复制出英文的和法文的,分别修改三套页面对应的path和$t{}内容。首先:cn、en、fr按钮加方法,刚开始想到的是路由动态传参:<router-link :to={path: /:id/homeCn, name: hom原创 2020-10-18 10:58:24 · 178 阅读 · 0 评论 -
字母组合---排列组合问题
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:“23”输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。/** * @param {stri...原创 2020-04-07 09:04:08 · 1772 阅读 · 1 评论 -
820. 单词的压缩编码--Set的使用
给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A。例如,如果这个列表是 [“time”, “me”, “bell”],我们就可以将其表示为 S = “time#bell#” 和 indexes = [0, 2, 5]。对于每一个索引,我们可以通过从字符串 S 中索引的位置开始读取字符串,直到 “#” 结束,来恢复我们之前的单词列表。那么成功对给定单词列表进行编码的...原创 2020-03-28 20:35:40 · 163 阅读 · 2 评论 -
ajax
AjaxAjax | MDNAJAX是异步的JavaScript和XML(Asynchronous JavaScript And XML)。简单点说,就是使用 XMLHttpRequest 对象与服务器通信。 它可以使用JSON,XML,HTML和text文本等格式发送和接收数据。AJAX最吸引人的就是它的“异步”特性,也就是说他可以在不重新刷新页面的情况下与服务器通信,交换数据,或更新页面。...原创 2020-03-27 22:01:27 · 116 阅读 · 0 评论 -
最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd” 输出: “bb”法一:使用中心对称方法var longestPalindrome = function(s) { //考虑边界情况 if(s.lengt...原创 2020-03-25 16:35:43 · 83 阅读 · 0 评论 -
无重复字符的最长子串--
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “w...原创 2020-03-25 14:40:32 · 87 阅读 · 0 评论 -
打家劫舍--动态规划
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1] 输出: 4 解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 ...原创 2020-03-25 09:17:58 · 129 阅读 · 0 评论 -
按摩师--动态规划
一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数。注意:本题相对原题稍作改动示例 1:输入: [1,2,3,1] 输出: 4 解释: 选择 1 号预约和 3 号预约,总时长 = 1 + 3 = 4。示例 2:输入: [2,...原创 2020-03-25 08:59:51 · 283 阅读 · 0 评论 -
空格替换
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。function replaceSpace(str){ // write code here //return str.replace(/\s/g, '%20') //或者 var reg = new...原创 2020-03-19 20:53:18 · 95 阅读 · 0 评论 -
删除公共字符
题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are students. aeiou输出Thy r stdnts.实现:首先转换成数组,...原创 2020-03-19 20:49:25 · 263 阅读 · 0 评论 -
prototypal inheritance
关于继承http://blog.vjeux.com/2011/javascript/how-prototypal-inheritance-really-works.html转载 2020-03-08 09:50:44 · 217 阅读 · 0 评论 -
反转字符串
var reverseString = function(s){ const list = s.split(' ') list.forEach((item, index, arr)=>{ arr[index] = item.split('').reverse().join('') }) return list.join(' ')}或者v...原创 2020-03-18 14:26:24 · 157 阅读 · 0 评论 -
两数之和、3、4数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。时间复杂度O(n)var add = function(nums,target){ var obj = {} for(let i =0; i<nums.length; i++) { if(typeof obj[nums[i]] !==...原创 2020-03-18 14:32:10 · 99 阅读 · 0 评论 -
查询字符串中出现次数最多的字母,并返回次数
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document<...原创 2020-02-12 15:13:52 · 1036 阅读 · 0 评论 -
前端练习---计时器
实现一个打点计时器,要求1、从 start 到 end(包含 start 和 end),每隔 100 毫秒 console.log 一个数字,每次数字增幅为 12、返回的对象中需要包含一个 cancel 方法,用于停止定时操作3、第一个数需要立即输出function count(start, end) { //想到setInterval和setTimeout,接受两个参数,第一个是...原创 2020-01-31 20:37:30 · 776 阅读 · 0 评论 -
获取对象的长度不能用.length
var obj = {name: "iu", age: 4}获取obj的长度不能用.length,而是用Object.keys(obj)获取key值,Object.values(obj)获取value值,Object.keys(obj).length获取长度原创 2020-01-28 20:13:51 · 547 阅读 · 0 评论 -
es6中类型转换总结
主要有以下三点:转换成字符串转换成数字强制类型转换一. 转换成字符串1). 首先知道所用的是toString()方法。针对Boolean值、数字和字符串这些伪对象,还是真对象,都有该方法。2). 其次,该方法的使用。除了number类型的使用时有点特殊外,别的未对象和真对象的使用一样,例如:var a1 = true;a1.toString(); //输出...原创 2019-12-20 21:54:09 · 5110 阅读 · 0 评论 -
数组操作--查找元素位置
在数组 arr 中,查找值与 item 相等的元素出现的所有位置function findAllOccurrences(arr, target) { // var a1 = [] // arr.forEach((items,index,arr) => { // items === target ? a1.push(index) : 0 //或者 ...原创 2019-12-19 20:53:10 · 1008 阅读 · 0 评论 -
数组操作--求二次方
为数组 arr 中的每个元素求二次方。不要直接修改数组 arr,结果返回新的数组function square(arr) { // 使用普通的for循环遍历arr,(或者forEach方法),元素*元素的值push到新数组a1中 //var a1 = [] //for (let i =0; i< arr.length; i++) { // a1.push...原创 2019-12-17 21:02:29 · 345 阅读 · 0 评论 -
数组操作--查找重复元素
找出数组 arr 中重复出现过的元素function duplicates(arr) { //首先给arr排序;用for循环判断i和i+1的值是否相等,相等,则存入a1中; //利用es6的set给a1去重,存入a2中;此时a2是个类数组,用es6新增的array.from()方法,转换为数组 // arr.sort() // var a1 =[] // for...原创 2019-12-12 22:02:22 · 363 阅读 · 0 评论 -
数组操作--添加元素
在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr,结果返回新的数组function insert(arr, item, index) { //var a1 = arr.slice(0) // for (var i = a1.length; i>index; i--) { // a1[i] = a1[i-1] //} ...原创 2019-12-10 21:05:35 · 411 阅读 · 0 评论 -
数组操作----合并数组 arr1 和数组 arr2。不要直接修改数组 arr,结果返回新的数组
function concat(arr1, arr2) { //var a1 = arr1.slice(0) // Array.prototype.push.apply(a1, arr2) //return a1 //或者 // return a1.concat(arr2) // var a2 = arr1.concat(arr2) ...原创 2019-12-05 21:29:58 · 3569 阅读 · 0 评论 -
数组操作----删除数组 arr 第一个元素。不要直接修改数组 arr,结果返回新的数组
function curtail(arr) { //法1,用shift方法删除第一项 //var a1 = arr.slice(0) //或者 var a1 = [] Array.prototype.push.apply(a1,arr) //用push.apply()方法 a1.shift() return a1 ...原创 2019-12-05 21:12:53 · 1461 阅读 · 0 评论 -
数组操作----在数组 arr 末尾添加元素 item。不要直接修改数组 arr,结果返回新的数组
function append(arr, item) {//法一 //var a = arr.slice(0) //将arr中的所有元素赋给a //a.push(item) //return a//法二 //var a2 = arr.slice(0) //a2.splice(a2.length,0,item) //return a2//法...原创 2019-12-02 21:51:38 · 593 阅读 · 0 评论 -
JS -变量、作用域、内存
Two types of values can be stored in javascript variables: primitive values and reference values. Primitive values have one of the five primitive data types: Undefined, Null, Boolean, Number, and Stri...原创 2019-11-22 21:03:07 · 110 阅读 · 0 评论