首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回js中路径的对象的递归搜索

返回js中路径的对象的递归搜索
EN

Stack Overflow用户
提问于 2019-07-08 17:22:05
回答 1查看 120关注 0票数 0

我正在编写一个函数,用于搜索嵌套的js对象中的键或值,返回命中及其路径。目前,搜索阶段的路径连接还不起作用。也许有人能给我个提示。

鉴于这些测试数据:

代码语言:javascript
复制
let object = {
    'id' : '1',
    'items' : [
        'knive', 'blue flower', 'scissor'
    ],
    'nested' : {
        'array1' : ['gold', 'silver'],
        'array2' : ['blue', 'knive'],
    }

}

let argument = 'knive';

这个代码是:

代码语言:javascript
复制
let pincushion = [];

find(argument, object, pincushion);

function find(needle, heyheap, pincushion, path = '') {

    for (let pitchfork in heyheap) {

        if (typeof(heyheap[pitchfork]) === 'object') {

            if (path.length == 0) {
                path = pitchfork.toString();
            } else {
                path = path.concat('.').concat(pitchfork);
            }

            find(needle, heyheap[pitchfork], pincushion, path);
            if (path.length > 0) {
                let split = path.split('.');
                path = path.substring(0, path.length - split[split.length - 1].length - 1);
            }

        } else if (pitchfork === needle || heyheap[pitchfork] === needle) {            

            let key = pitchfork.toString();
            let value = heyheap[pitchfork].toString();
            let pin = 'key: '.concat(key).concat(', value: ').concat(value).concat(', path: ').concat(path);
            pincushion.push(pin);
        }
    }
}

我得到以下结果:

代码语言:javascript
复制
[ 'key: 0, value: knive, path: items',
  'key: 1, value: knive, path: items.nested.array1.array2' ]

但我想要这些:

代码语言:javascript
复制
[ 'key: 0, value: knive, path: items',
  'key: 1, value: knive, path: nested.array2' ]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 17:36:38

您需要分配path,因为字符串是不可变的。

代码语言:javascript
复制
path = path.concat('.').concat(pitchfork);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56939826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档