Javascript 从数组中删除匹配字符串
我有以下数组:Javascript 从数组中删除匹配字符串,javascript,arrays,reactjs,Javascript,Arrays,Reactjs,我有以下数组: ['/1', '/1/a', '/1/a/b', '/2', '/2/a', '/2/a/b'] 我想写一个函数,它可以返回以下内容: ['/1', '/2'] ['/1/a', '/2/a'] 实际上,“/1”表示父母,“/1/a”表示孩子。假设我们有以下json: [ { a:{ b: 'b value' } } { a:{ b: 'b value' } } { a:{ b: 'b va
['/1', '/1/a', '/1/a/b', '/2', '/2/a', '/2/a/b']
我想写一个函数,它可以返回以下内容:
['/1', '/2']
['/1/a', '/2/a']
实际上,“/1”表示父母,“/1/a”表示孩子。假设我们有以下json:
[
{
a:{
b: 'b value'
}
}
{
a:{
b: 'b value'
}
}
{
a:{
b: 'b value'
}
}
]
如果数组是,例如
['/1/a', '/1/a/b', '/2/a', '/2/a/b']
该函数将返回以下结果:
['/1', '/2']
['/1/a', '/2/a']
我运行了jsonpath函数,它返回了上面的数组。例如,我想更改从jsonpath返回的对象的颜色。我正在使用react在浏览器中显示json,我只想更改父对象(即'/1','/2')的颜色,而不想更改子对象(即'/1/a','/1/a/b')的颜色以保存额外的渲染,我如何才能做到这一点?
函数可以是这样的
filter(val => !val.startsWith(parent))
我该怎么做?请帮助您可以通过对照模式检查存储的值来检查模式是否存在 这种方法接受PAT并检查某些项目是否有多个较长的子项 最后,所有部件都连接在一起
const
数组=['/1/a/b'、'/1'、'/1/a'、'/1/a/b/3'、'/2'、'/2/a/b'、'/2/a/b'、'/2/a/c/3'、'/11/a'、'/11/b'、'/11'],
最短=数组
.reduce((最短,字符串)=>{
常数
keys=string.slice(1).split('/'),
subset=shortest.filter(t=>keys.some((v,i)=>v!==t[i]);
if(subset.length!==shortest.length)返回[…子集,键];
如果(!shortests.some(t=>t.every((v,i)=>v==keys[i]))shortests.push(keys);
返回最短;
}, [])
.map(keys=>`/${keys.join('/')}`);
控制台日志(最短)代码>您好,谢谢您的回答,但它会将“/0”返回到“/9”。我有像'/15','/699','/1999'这样的字符串