首页 > 解决方案 > 如何通过查找属性的值来获取元素的索引?

问题描述

有点棘手的问题。我有这组面板,我想做一个函数,让我可以找到array这些元素的位置。不过,在这array里面,有subarrays。在这种情况下,我只想获取keyparent 的array

例子:

[
   {
      "name":"apple"
   },
   {
      "name":"bone"
   },
   [
      {
         "name":"banana"
      },
      {
         "name":"tea"
      }
   ]
]

所以,如果我apple输入函数,它会返回 me 0,如果我想找到具有 name 的元素bone,它会返回索引1,如果我想找到 的索引banana,它会返回 me2并且tea也会返回 me 2

任何人都有一个想法,我怎样才能以干净的方式实现这一目标?

谢谢!

标签: javascriptarrays

解决方案


const input = [{name:"apple"},{name:"bone"},[{name:"banana"},{name:"tea"}]];

const myFind = (name) => input.findIndex(e => 
  Array.isArray(e) // check if element is array
    ? e.some(x => x.name === name) // if yes, check if contains name
    : e.name === name // if no, check if elements name is equal name 
)

console.log('bone:', myFind('bone'))
console.log('banana:', myFind('banana'))
console.log('tea:', myFind('tea'))


推荐阅读