1、请写一个程序,找出字符串“kqaznba”,出现次数最多的字符,出现多少次
function get(str) {
let arr = str.split("")
let obj = {};
arr.map(item => {
if (obj[item]) {
obj[item]++
} else {
obj[item] = 1;
}
})
let t = Object.keys(obj).sort((a, b) => obj[b] - obj[a]);
console.log(t[0] + '---' + obj[t[0]])
}
get('kqaznba')
2、找出 a = [0, 1, 2, 3, 4, 5],b = [55,3, 4, 5, 6, 7, 8, 2],的非交集
const a = [0, 1, 2, 3, 4, 5]
const b = [2,3, 4, 5, 6, 7, 8,55]
function getIndex(a, b) {
const oneArr = [];
[...new Set(a)].map((item, index) => {
if (!b.includes(item)) {
oneArr.push(index)
}
});
return oneArr;
}
console.log([...getIndex(a, b)])
console.log([...getIndex(b, a)])
3、sku算法
摘抄自 juejin.cn/post/684490…
let names = ["iPhone X", "iPhone XS", "iPhone XS111"]
let colors = ["黑色", "白色", "红色"]
let storages = ["64g", "256g", "2996g"]
/**
* 转换为以下数据
* [ [ 'iPhone X', '黑色', '64g' ],[ 'iPhone X', '黑色', '256g' ],
[ 'iPhone X', '黑色', '2996g' ],[ 'iPhone X', '白色', '64g' ],
[ 'iPhone X', '白色', '256g' ],[ 'iPhone X', '白色', '2996g' ],
[ 'iPhone X', '红色', '64g' ],[ 'iPhone X', '红色', '256g' ],
[ 'iPhone X', '红色', '2996g' ],[ 'iPhone XS', '黑色', '64g' ],
[ 'iPhone XS', '黑色', '256g' ],[ 'iPhone XS', '黑色', '2996g' ],
[ 'iPhone XS', '白色', '64g' ],[ 'iPhone XS', '白色', '256g' ],
[ 'iPhone XS', '白色', '2996g' ],[ 'iPhone XS', '红色', '64g' ],
[ 'iPhone XS', '红色', '256g' ],[ 'iPhone XS', '红色', '2996g' ],
[ 'iPhone XS111', '黑色', '64g' ],[ 'iPhone XS111', '黑色', '256g' ],
[ 'iPhone XS111', '黑色', '2996g' ],[ 'iPhone XS111', '白色', '64g' ],
[ 'iPhone XS111', '白色', '256g' ],[ 'iPhone XS111', '白色', '2996g' ],
[ 'iPhone XS111', '红色', '64g' ],[ 'iPhone XS111', '红色', '256g' ],
[ 'iPhone XS111', '红色', '2996g' ]
]
*/
let combine = function (...chunks) {
let res = []
let helper = function (chunkIndex, prev) {
// console.log(chunkIndex)
// console.log(prev)
let chunk = chunks[chunkIndex]
let isLast = chunkIndex === chunks.length - 1
for (let val of chunk) {
// cur = ['iPhone X','黑色','64g']
let cur = prev.concat(val)
if (isLast) {
// 如果已经处理到数组的最后一项了 则把拼接的结果放入返回值中
res.push(cur)
} else {
helper(chunkIndex + 1, cur)
}
}
}
// 从属性数组下标为 0 开始处理
// 并且此时的 prev 是个空数组
helper(0, [])
return res
}
console.log(combine(names, colors, storages))
4、写一个将金额转为大写的函数
//金额转换
function convertCurrency(money) {
//汉字的数字
let cnNums = new Array("零","壹","贰","叁","肆","伍","陆","柒","捌","玖")
//基本单位
let cnIntRadice = new Array("", "拾", "佰", "仟")
//对应整数部分扩展单位
let cnIntUnits = new Array("", "万", "亿", "兆")
//对应小数部分单位
let cnDecUnits = new Array("角", "分", "毫", "厘")
//整数金额时后面跟的字符
let cnInteger = "整"
//整型完以后的单位
let cnIntLast = "元"
//最大处理的数字
let maxNum = 999999999999999.9999
//金额整数部分
let integerNum
//金额小数部分
let decimalNum
//输出的中文金额字符串
let chineseStr = ""
//分离金额后用的数组,预定义
let parts
if (money == "") { return ""
money = parseFloat(money)
if (money >= maxNum) {
//超出最大处理数字
return ""
}
if (money == 0) {
chineseStr = cnNums[0] + cnIntLast + cnInteger
return chineseStr
}
//转换为字符串
money = money.toString()
if (money.indexOf(".") == -1) {
integerNum = money
decimalNum = ""
} else {
parts = money.split(".")
integerNum = parts[0]
decimalNum = parts[1].substr(0, 4)
}
//获取整型部分转换
if (parseInt(integerNum, 10) > 0) {
let zeroCount = 0
let IntLen = integerNum.length
for (let i = 0
let n = integerNum.substr(i, 1)
let p = IntLen - i - 1
let q = p / 4
let m = p % 4
if (n == "0") {
zeroCount++
} else {
if (zeroCount > 0) {
chineseStr += cnNums[0]
}
//归零
zeroCount = 0
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
}
if (m == 0 && zeroCount < 4) {
chineseStr += cnIntUnits[q]
}
}
chineseStr += cnIntLast
}
//小数部分
if (decimalNum != "") {
let decLen = decimalNum.length
for (let i = 0
let n = decimalNum.substr(i, 1)
if (n != "0") {
chineseStr += cnNums[Number(n)] + cnDecUnits[i]
}
}
}
if (chineseStr == "") {
chineseStr += cnNums[0] + cnIntLast + cnInteger
} else if (decimalNum == "") {
chineseStr += cnInteger
}
return chineseStr
}
console.log(convertCurrency("10110.125425"))
console.log(convertCurrency("0"))