I'm trying to get the index of the parent given an element inside the children, for example, I have a list
variable (2) [Array(1), Array(2)]
with this structure:
[
[
{id: "1",contactType: {id: "phoneNumber",company: {id: "01",name: "Company01"}},value: "5555555555"},
],
[
{id: "2",contactType: {id: "phoneNumber",company: {id: "03",name: "Company03"}},value: "7777777777"},
{id: "3",contactType: {id: "phoneNumber",company: {id: "05",name: "Company05"}},value: "8888888888"},
],
]
I tried using includes
and findIndex
to verify if such element exist first and then get the parent index:
list.includes('5555555555', 0);
I expected to get true
because I asked include
to begin searching in index 0 of the list exactly where "5555555555"
element is, but i got false
instead.
Also tried with:
list.findIndex(x => x.value === '5555555555');
I expected 0
since element 5555555555
is in parent 0 index. But got -1
instead.
I also tried using flat()
to get into the children and the use includes
, but then I lose the 0
and 1
index of the original list
.
Expected output:
foo(list,'7777777777');
should return 1
since that element is inside the second array of the list
or foo(list,'8888888888');
should also return 1
since that element is also inside the second array of the list
.
Can someone guide me on how to approach this issue?
CodePudding user response:
Use Array.findIndex
with condition
const data = [
[
{id: "1",contactType: {id: "phoneNumber",company: {id: "01",name: "Company01"}},value: "5555555555"},
],
[
{id: "2",contactType: {id: "phoneNumber",company: {id: "03",name: "Company03"}},value: "7777777777"},
{id: "3",contactType: {id: "phoneNumber",company: {id: "05",name: "Company05"}},value: "8888888888"},
],
];
const index = data.findIndex(item => item.findIndex(node => node.value === "5555555555") > -1);
console.log(index)
CodePudding user response:
const arr = [
[
{id: "1",contactType: {id: "phoneNumber",company: {id: "01",name: "Company01"}},value: "5555555555"},
],
[
{id: "2",contactType: {id: "phoneNumber",company: {id: "03",name: "Company03"}},value: "7777777777"},
{id: "3",contactType: {id: "phoneNumber",company: {id: "05",name: "Company05"}},value: "8888888888"},
],
];
const index = arr.flat().findIndex(item => item.value === "7777777777")
console.log(index);