我正在编写一个函数,用于搜索嵌套的js对象中的键或值,返回命中及其路径。目前,搜索阶段的路径连接还不起作用。也许有人能给我个提示。
鉴于这些测试数据:
let object = {
'id' : '1',
'items' : [
'knive', 'blue flower', 'scissor'
],
'nested' : {
'array1' : ['gold', 'silver'],
'array2' : ['blue', 'knive'],
}
}
let argument = 'knive';这个代码是:
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);
}
}
}我得到以下结果:
[ 'key: 0, value: knive, path: items',
'key: 1, value: knive, path: items.nested.array1.array2' ]但我想要这些:
[ 'key: 0, value: knive, path: items',
'key: 1, value: knive, path: nested.array2' ]发布于 2019-07-08 17:36:38
您需要分配path,因为字符串是不可变的。
path = path.concat('.').concat(pitchfork);https://stackoverflow.com/questions/56939826
复制相似问题