【study】简单逻辑题-day1

34 阅读1分钟
// 产生一个不重复的随机数组,要求一个函数传入三个参数,
// 参数一: 生成数组的长度,参数二: 随机范围的最小值,参数三: 随机范围的最大值

function myArray(len, min, max) {
    const arr = []
    // for(let i = 0; i < len; i++) {
    //     const num = Math.floor(Math.random() * (max - min) + min);
    //     if (!arr.includes(num)) {
    //         arr.push(num)
    //     }
    // }
    while (arr.length < len) {
        const num = Math.floor(Math.random() * (max - min) + min);
        if (!arr.includes(num)) {
            arr.push(num)
        }
    }
    const res = [...new Set(arr)]
    const mins = Math.min(...res)
    const maxs = Math.max(...res)
    return {
        'arr': arr,
        'min': mins,
        'max': maxs
    }

}

console.log(myArray(5, 2, 8))
// 2.解析这个url const url = "http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled 
//  期望  { user: 'anonymous', id: [ 123, 456 ], city: '北京', enabled: true }

const url = "http://www.domain.com/?user=anonymous&id=123&id=456&city=%E5%8C%97%E4%BA%AC&enabled"

const arr = url.split('?')[1].split('&')
const mapObj = new Map()
for(let i = 0 ; i < arr.length; i++) {
    const item = arr[i].split('=');
    if (item[0] === 'city') {
        item[1] = decodeURIComponent(item[1]);
    }
    if (item[0]) {
        if (mapObj.has(item[0])) {
            const value = mapObj.get(item[0]);
            if (Array.isArray(value)) {
                value.push(item[1]);
            } else {
                mapObj.set(item[0], [+value, +item[1]]);
            }
        } else {
            mapObj.set(item[0], item[1] || true);
        }
    }
}
const obj = Object.fromEntries(mapObj);
console.log(obj, 'obj--------')
实现 sum(x,y) = sum(x)(y),即定义一个函数sum,该函数可以传一个参数或者两个参数,且都要满足最后结果,例如x:2,y:3,最终期望sum(x,y) = sum(x)(y) = 5
function sum(x) {
  if (arguments.length === 2) {
    return arguments[0] + arguments[1];
  } else {
    return function(y) {
      return x + y; // 这个新函数闭包了x的值
    };
  }
}

console.log(sum(2, 3)); // 输出 5
console.log(sum(2)(3)); // 输出 5