前端题 js

308 阅读1分钟

实现map

输入对象obj 和对应的key路径,输出最终的value.

const obj = {a: [{}, {a: 2}]}

const findStr = 'a[1].a'

function map(obj, ...str) {
    let r = []

    str.forEach((str) => {
        const key = str.split(/\[|\]|\./)

     r.push(key.reduce((obj, b) => b === '' ? obj : obj[b], obj))
    })
    return r
}
console.log(map(obj, findStr, findStr))

给定一个二维数组和一个word,查找是否在其中,可以上下左右移动

输入数组arr, fxa ,output : true;


const arr = [
    [ 'a', 'c', 'd', 'z' ],
    [ 'x', 't', 'r', 'o' ],
    [ 'f', 'i', 'w', 'o' ]
]

function find(arr, str) {
    for( let i = 0; i < arr.length; i++ )
    {
        for( let j = 0; j < arr[i].length; j++ )
        {
            if (arr[i][j] === str[0]) {
                if(f4 (i , j , 1)){
                    return true
                }

            }
        }
    }

    function f4 (i , j , w) {
        if (w >2) return true
        if(j + 1 < 4 && arr[i][j + 1] == str[w] )  {
            return f4 (i , j+1 , w+1)
        }
        if(j - 1 >= 0 &&  arr[i][j - 1] == str[w])  {
            return f4 (i , j-1 , w+1)
        }

        if(i + 1 < 3 &&  arr[i + 1][j] == str[w])  {
            return f4 (i +1 , j , w+1)
        }
        if(i - 1 >= 0 &&  arr[i - 1][j] == str[w])  {
            return f4 (i -1 , j , w+1)
        }
        return false
    }
    return false
}
console.log(find(arr, 'fxa'))
  1. docker 原理 应用哪里
  2. 设计模式 门面 桥 ,装饰器应用场景
  3. 0号进程 是什么
  4. linux boot文件夹作用
  5. 查看nginx pid 命令
  6. git reset后,再回到之前新的commit
  7. mysql 查询 缓存设置
  8. express 路由原理 怎么优化
  9. php 用的版本 什么框架了解
  10. node 框架了解哪些
  11. mongodb 复制集
  12. gitlab 源码改造
  13. flv 视频转码源码
  14. 域名解析 A 和 rename区别
  15. 业务相关

2020/10/13

flex regexp {a:b:c{5}} add(1)(2)(3) promise.all sleep

angular vue双向绑定 ioc 前端路由实现 图片上传实现