function getCamelCase(str) {
var arr = str.split( '-' );
return arr.map( function( item, index ) {
console.log(item)
if( index === 0 ){
return item;
}else{
return item.charAt(0).toUpperCase() + item.slice( 1 );
}
}).join('');
}
console.log(getCamelCase("xiaoshuo-ss-sfff-fe"))
function getCamelCase( str ){
return str.replace( /-([a-z])/g , function( all, i){ // 注意正则中的(),这里可以匹配到 -s 和s
return i.toUpperCase();
} )
function getCase(str) {
var arr = str.split(''); // 每一个字符组成数组
str = arr.map(function ( item ){
if( item.toUpperCase() === item ){
return '-' + item.toLowerCase();
}else{
return item;
}
}).join( '' );
return str;
}
console.log(getCamelCase("xiaoShuoWangXiao"))
function getCase(){
return str.replace( /[A-Z]/g , function(i) {
retrun '-' + i.toLowerCase();
})
}
var arry =[1,25,15,1,2,15,5,15,25,35,1]
var set =new Set(arry)
console.log([...set])
[...new Set(arr)]
function qc(arr){
var n = []; //一个新数组
for(var i = 0;i<array.length;i++){ //也可以写x in array x是迭代序号
if(n.indexOf(array[i) === -1){ //检测到没有 则添加
n.push(array[i)
}
}
return n;
}
/**
* 获取字符串中出现次数最多的字母
* @param {String} str
*/
function getChar(str) {
if (typeof str !== 'string') return // 判断参数是否为字符串
const obj = new Object() // 键为字母,值为次数
for (let i = 0; i < str.length; i ++) { // 遍历字符串每一个字母
let char = str.charAt(i) // 当前字母
obj[char] = obj[char] || 0 // 保证初始值为0
obj[char] ++ // 次数加1
}
let maxChar // 存储字母
let maxNum = 0 // maxChar字母对应的次数
for(let key in obj) { // 遍历obj
if (obj[key] > maxNum) {
maxChar = key // 比较后存储次数多的字母
maxNum = obj[key] // 以及它对应的次数
}
}
return maxChar // 返回结果
}
let str = 'aabbbccdd'
console.log('出现次数最多的字母为:' + getChar(str))
'say I love U'.split('').reverse().join('') // U evol I yas
JSON.parse(JSON.stringify(obj)
function deepCopy(src, r) {
var r = r || {};
for(var prop in src){
// console.log(prop)
if(typeof src[prop] === 'object'){ // 是对象 需要深拷贝
if (src[prop].constructor === Array){
// console.log("数组");
r[prop]=[];
}else{
// console.log("对象");
r[prop]={};
}
deepCopy(src[prop], r[prop]);
}else{ // 非对象,直接拷贝
r[prop] = src[prop];
}
}
return r;
}
var arr = [[1, 2], [0, 3, 5], [-1, 4]];
arr = arr
.reduce((a, b) => a.concat(b), [])
.sort((a, b) => a - b); // 如果需要从小到大排序加上这个
console.log(arr); // 输出 [-1, 0, 1, 2, 3, 4, 5]
var arr = [[1, 2], [0, 3, 5], [-1, 4]];
var obj = {};
arr = arr
.forEach(item => item.forEach(function(num) {
obj[num] = true;
}));
arr = Object
.keys(obj)
.map(num => +num) // 这行主要是将键名取出来之后,数组中全部是字符串,将其都转成数字,以便后面排序
.sort((a, b) => a - b);
console.log(arr);
7.数组排序
var arr = [1,25,3,85,4,0]
arr.sort((m,n)=>{
if(m>n){
return 1 //顺序改变
}else{
return -1 //顺序不改变
}
})
console.log(arr) // [0, 1, 3, 4, 25, 85]
var arr = [1,25,3,85,4,0]
arr.sort((m,n)=>{
if(m>n){
return m-n // m若大于n,m-n则是正数,反正是负数 和上面一样道理
}})
console.log(arr) // [0, 1, 3, 4, 25, 85]
[{'name': '张三', age: 16},{'name': '李四', age: 45},{'name': '王五', age: 19},{'name': '赵六', age: 6}] 按年龄排序
var arr = [{'name': '张三', age: 16},{'name': '李四', age: 45},{'name': '王五', age: 19},{'name': '赵六', age: 6}]
arr.sort((m,n)=>{
if(m.age>n.age){
return m.age-n.age
}
})
console.log(arr) // [{name: "赵六", age: 6},{name: "张三", age: 16},{name: "王五", age: 19},{name: "李四", age: 45}]
// 总人数n 报数出环数字k n=100 k=3 第i个人出环
function josephus(n,k,i) {
if(i==1){
return (n+k-1)%n;
}else{
return (josephus(n-1, k,i-1) + k)%n;
}
}
for(var i=1;i<=100;i++){
console.log("第"+i+"次出环,下标为:"+josephus(100,3,i))
}
// 第100次:下标为90的人出环 他的编号是91 (别忘了加1)
function josephus2 (n,k){
var players = [];
for(var i=1;i<=n;i++){ // 组成数组
players.push(i);
}
var flag=0;
while(players.length>1){
var outNum = 0; //本次循环已出局人数,便于定位元素位置
var len = players.length;
for(var i=0;i<len;i++){
flag++;
if(flag==k){
flag=0;
console.log("出局:"+players[i-outNum]+"本次循环已出局人数:"+outNum);
// i循环时受数组长度影响 每从头开始时i变为0; 但flag始终是123..k 123..k 固定循环,不受数组影响 ,
players.splice(i-outNum,1);
outNum++;
}
}
}
return players[0];
}
console.log(josephus2(100,3));
有一个数组,我们需要通过js对数组的元素进行随机排序,然后输出,这其实就是洗牌算法,首页需要从元素中随机取一个和第一元进行交换,然后依次类推,直到最后一个元素。
程序员必须知道的10大算法:快速排序算法、堆排序算法、归并排序、二分查找算法、BFPRT(线性查找算法)、DFS(深度优先搜索)、BFS(广度优先搜索)、Dijkstra算法、动态规划算法、朴素贝叶斯分类算法
使用原生js将一维数组中,包含连续的数字分成一个二维数组,这篇文章分2种情况介绍如何实现?1、过滤单个数字;2、包含单个数字。
给定一个无序的整数序列, 找最长的连续数字序列。例如:给定[100, 4, 200, 1, 3, 2],最长的连续数字序列是[1, 2, 3, 4]。此方法不会改变传入的数组,会返回一个包含最大序列的新数组。
racking.js 是一个独立的JavaScript库,实现多人同时检测人脸并将区域限定范围内的人脸标识出来,并保存为图片格式,跟踪的数据既可以是颜色,也可以是人,也就是说我们可以通过检测到某特定颜色,或者检测一个人体/脸的出现与移动,来触发JavaScript 事件。
这篇文章主要是针对一种最常见的非对称加密算法——RSA算法进行讲解。其实也就是对私钥和公钥产生的一种方式进行描述,RSA算法的核心就是欧拉定理,根据它我们才能得到私钥,从而保证整个通信的安全。
PageRank,网页排名,又称网页级别、Google左侧排名或佩奇排名,是一种由 根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一,以Google公司创办人拉里·佩奇(Larry Page)之姓来命名。
什么是回文字符串?即字符串从前往后读和从后往前读字符顺序是一致的。例如:字符串aba,从前往后读是a-b-a;从后往前读也是a-b-a
将一个整数中的数字进行颠倒,当颠倒后的整数溢出时,返回 0 ;当尾数为0时候需要进行舍去。解法:转字符串 再转数组进行操作,看到有人用四则运算+遍历反转整数。
给出一个字符串,统计出现次数最多的字母。方法一为 String.prototype.charAt:先遍历字符串中所有字母,统计字母以及对应显示的次数,最后是进行比较获取次数最大的字母。方法二 String.prototype.split:逻辑和方法一相同,只不过是通过 split 直接把字符串先拆成数组。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!