JS算法学习(2)

155 阅读1分钟
// 打印出1-10000之间的对称数
// 例如121,1331

// 方法1:x===逆序之后的数比较
// 1441 1441
// 1.1 构造数组1-10000
// 1.2过滤出x===逆序之后的数比较

// 构造数组的两种方法
[...Array(10000).keys()].map((v, i) => i + 1);
Array.from({ length: 10000 }, (v, i) => i + 1);

function filterFn(v) {
    const reverseNumber = Number(v.toString().split('').reverse().join(''))
    return v === reverseNumber;
}

[...Array(10000).keys()]
    .map((v, i) => i + 1)
    .filter(filterFn);//198

Array.from({ length: 10000 }, (v, i) => i + 1)
    .filter(filterFn);

// 方法二:利用算数规律遍历输出
const result = []
for (let i = 1; i < 10; i++) {
    result.push(i); //1-9
    result.push(i * 11); //11-99
    for (let j = 0; j < 10; j++) {
        result.push(i * 101 + j * 10); //101-909 
        result.push(i * 1001 + j * 110); //1001 - 9009
    }
}
console.log(result);