2016-10-18 62 views
1

這個問題是跟進拿到指標, Get the index of a multidimensional array with the value of a given string in javascript在多維數組在javascript

我想這個答案,

var a1 = [["present",["John","Josh","Jay"]],["absent",["May","Mary","Mary Jane"]]], 
    a2 = [["J",["John","Josh","Jay"]],["M",["May","Mary","Mary Jane"]],["S",["Sally","Sam","Sammy Davis"]]], 
getStatus = (a,n) => a.find(e => e[1].indexOf(n) !== -1)[0], 
getIndex = (a,n) => a.findIndex(e => e[1].indexOf(n) !== -1); 

console.log(getStatus(a1,"Mary")); 
console.log(getIndex(a2,"Sammy Davis")); 

這是工作,但也有問題。 如果給定的字符串不在數組中,該怎麼辦?如何處理? 如何獲得所有索引,如果有多個索引具有給定字符串的值?

例如,在A1,

var a1 = ["present",["John","Josh","Jay"]],["absent",["May","Josh","Mary Jane"]]] 

如何獲得0,1?使用getIndex()?

+4

不是一個答案,但我不明白爲什麼您使用的是多維數組'a1'的對象,而不是,好像是沒有收益。 '{present:['John','Josh'],absent:['May','Mary Jane']}'會更容易處理 –

+0

JavaScript沒有多維數組,只有數組等等。 –

回答

0

我必須同意@Rob M.的評論,但你仍然可以這樣做:

var a1 = [["present",["John","Josh","Jay"]],["absent",["May","Mary","Mary Jane"]]], 
 
     a2 = [["J",["John","Josh","Jay"]],["M",["May","Mary","Mary Jane"]],["S",["Sally","Sam","Sammy Davis"]]], 
 
getStatus = (a,n) => a.find(e => e[1].indexOf(n) !== -1)[0], 
 
getIndex = (a,n) => { var x = -1; 
 
         return [a.findIndex(e => (x = e[1].indexOf(n), x !== -1)),x]; 
 
        }; 
 
console.log(getIndex(a2,"May")); 
 
console.log(getIndex(a2,"Sammy Davis")); 
 
console.log(getIndex(a2,"Daniel"));