如何通过查找属性的值来获取元素的索引?

时间:2021-06-25 14:19:00

标签: javascript arrays

有点棘手的问题。我有这组面板,我想制作一个函数来让我找到这个元素在 array 中的位置。然而,在这个array中,有subarrays。在这种情况下,我只想获取父 keyarray

示例:

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

因此,如果我将 apple 放在函数中,它会返回我 0,如果我想找到名称为 bone 的元素,它会返回我的索引 {{ 1}},如果我想找到 1 的索引,它会返回我 banana2 也会返回我 tea

任何人都有想法,我如何以干净的方式实现这一目标?

谢谢!

1 个答案:

答案 0 :(得分:4)

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'))