已知一个由ASCLL字符组成的字符串,查找第一个重复的字符
思路:每一个元素去与后面的元素去比较,只要相等就退出,说明已经找到第一个重复的字符了。
function getFirstSameStr (string) {
var i = 0
for (i; i < string.length; i++) {
for (var j = i + 1; j < string.length; j++) {
if (string[i] == string[j]) {
console.log('第一个重复的字符是', string[i])
return
} else {
continue
}
}
}
console.log('该字符串没有重复字符')
}
给定一个数组,数组元素只能为数字,null,undefined,NaN。求数组不重复最大子数组长度。
例如:输入[1,4,3,4,null,undefined,NaN,null] 输出 6
思路:将每一个元素全部转成字符串,避免了null
和undefined
的影响。null == undefined
为 true
,null === undefined
为false
,每个元素跟后面的元素去比较,看有没有重复的,找到重复的把后面的删除。
function maxSonArray (array) {
var i = 0
for (i; i < array.length; i++) {
// 全部转字符串便于比较(null == undefined为true,null === undefined为false)
array[i] = '' + array[i]
}
// console.log('处理后的数组', array)
var sonArray = array
i = 0
for (i; i < sonArray.length; i++) {
for (var j = i + 1; j < sonArray.length; j++) {
if (sonArray[i] === sonArray[j]) {
// 找到重复的就把后面重复的去掉
sonArray.splice(j, 1)
} else {
continue
}
}
}
console.log('最大子数组长度', sonArray.length, '最大子数组为', sonArray)
}
将函数补充完整 transform(url){ } 实现url地址参数的动态替换
例如 let href=‘https://www.baidu.com/s?user=teml2&&wd=teml’
console.log(transform(href)({user:‘123’,wd:‘aa’,qq:‘321’}))
输出:https://www.baidu.com/s?user=123&&wd=aa
思路:先找到?
,?
后面跟的就是参数,参数用&&
链接,我们就用&&
分割成数组,=
左右两边就是键值对,那直接用=
将键值对分割成数组,将新的参数值替换原来旧的参数值,注意题目不要新的参数就要原来的参数。所以遍历原来的参数的key
去接收新的参数值,新的字段就不要了。最后重新拼接字符串。
function transform (url, param) {
// 找到?后面就是参数串
var paramsindex = url.indexOf('?')
// 截取?前面的字符串
var urlHead = url.substr(0, paramsindex + 1)
// 截取?后面的字符串
var paramsStr = url.substr(paramsindex + 1)
// 将参数串按照'&&'分割
var paramsArray = paramsStr.split('&&')
// 将参数数组变成键值对放进对象
var keyValObject = {}
paramsArray.forEach((element) => {
let temp = element.split('=')
keyValObject[temp[0]] = temp[1]
});
// 合并参数对象
let tempKeyArray = Object.keys(keyValObject)
tempKeyArray.forEach((element) => {
keyValObject[element] = param[element]
})
// 想要把新对象的全部参数加上去可以用下一行代码
// Object.assign(keyValObject, param)
// 重新组合成url
let target = ''
let temparray = Object.entries(keyValObject)
for (let i = 0; i < temparray.length; i++) {
temparray[i] = temparray[i].join('=')
}
let parambody = temparray.join('&&')
target = urlHead + parambody
console.log(target)
}