大家好!我叫戴向天
QQ群:602504799
如若有不理解的,可加QQ群进行咨询了解
let data = [
[
{prop: 'prop1'},
[
{prop: 'prop1-1'},
{prop: 'prop1-2'},
[
{prop: 'prop1-3-1'},
{prop: 'prop1-3-2'},
{prop: 'prop1-3-3'},
]
]
],
{prop:'prop2'},
'戴向天'
]
function findIndex (arr, fn) {
function findData(arr,indexs = []){
return arr.reduce((obj, item, index) => {
if(obj.config&&fn(obj.config)){
return obj
}
const isArray = Array.isArray(item)
const res = isArray ? findData(item, obj.indexs) : fn(item) ? {config:item} : null
if (res&&res.config&&fn(res.config)) {
obj.indexs.push(index)
return {
config: res.config,
indexs:obj.indexs
}
}
return obj
}, { config: null, indexs })
}
const res = findData(arr)
const indexs = res.indexs.reverse()
return res.config&&fn(res.config)?indexs:null
}
findIndex(data,(item)=>item.prop === 'prop1')
findIndex(data,(item)=>item.prop === 'prop1-1')
findIndex(data,(item)=>item.prop === 'prop1-2')
findIndex(data,(item)=>item.prop === 'prop1-3-1')
findIndex(data,(item)=>item.prop === 'prop1-3-2')
findIndex(data,(item)=>item.prop === 'prop1-3-3')
findIndex(data,(item)=>item.prop === 'prop2')
findIndex(data,(item)=>item.prop === '戴向天')
findIndex(data,(item)=>item === '戴向天')
效果如图