Get coordinates of an element in multidimentional array in Javascript [duplicate]

≡放荡痞女 提交于 2019-12-11 15:28:41

问题


I want to where is placed an element in an multidimentional array like that :

    var letterVariations = [ 
		[' ','0','1','2','3','4','5','6','7','8','9'],
		['A','a','B','b','C','c','D','d','E','e',';'],
		['Â','â','F','f','G','g','H','h','Ê','ê',':'],
		['À','à','I','i','J','j','K','k','È','è','.'],
		['L','l','Î','î','M','m','N','n','É','é','?'],
		['O','o','Ï','ï','P','p','Q','q','R','r','!'],
		['Ô','ô','S','s','T','t','U','u','V','v','“'],
		['W','w','X','x','Y','y','Ù','ù','Z','z','”'],
		['@','&','#','[','(','/',')',']','+','=','-'],
	];
	var coordinates = letterVariations.indexOf('u');
	console.log(coordinates);
	// Want to know that 'u' is 7 in the 7th array

Is it possible ?


回答1:


Run a simple for loop and check if the character exists in the inner array using indexOf. return immediately once a match is found

var letterVariations = [
  [' ', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
  ['A', 'a', 'B', 'b', 'C', 'c', 'D', 'd', 'E', 'e', ';'],
  ['Â', 'â', 'F', 'f', 'G', 'g', 'H', 'h', 'Ê', 'ê', ':'],
  ['À', 'à', 'I', 'i', 'J', 'j', 'K', 'k', 'È', 'è', '.'],
  ['L', 'l', 'Î', 'î', 'M', 'm', 'N', 'n', 'É', 'é', '?'],
  ['O', 'o', 'Ï', 'ï', 'P', 'p', 'Q', 'q', 'R', 'r', '!'],
  ['Ô', 'ô', 'S', 's', 'T', 't', 'U', 'u', 'V', 'v', '“'],
  ['W', 'w', 'X', 'x', 'Y', 'y', 'Ù', 'ù', 'Z', 'z', '”'],
  ['@', '&', '#', '[', '(', '/', ')', ']', '+', '=', '-'],
];

function getCoordinates(array, char) {
  for (let i = 0; i < array.length; i++) {
    const i2 = array[i].indexOf(char);
    if (i2 !== -1)
      return [i, i2]
  }
  return undefined
}

console.log(getCoordinates(letterVariations, 'u'))
console.log(getCoordinates(letterVariations, '@'))

Note: This returns the indexes and it is zero-based. If you want [7, 7], you need to return [i+1, i2]




回答2:


https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf

const letterVariations = [ 
		[' ','0','1','2','3','4','5','6','7','8','9'],
		['A','a','B','b','C','c','D','d','E','e',';'],
		['Â','â','F','f','G','g','H','h','Ê','ê',':'],
		['À','à','I','i','J','j','K','k','È','è','.'],
		['L','l','Î','î','M','m','N','n','É','é','?'],
		['O','o','Ï','ï','P','p','Q','q','R','r','!'],
		['Ô','ô','S','s','T','t','U','u','V','v','“'],
		['W','w','X','x','Y','y','Ù','ù','Z','z','”'],
		['@','&','#','[','(','/',')',']','+','=','-'],
];

function getIndexOfLetter(letter) {
  return letterVariations.reduce((result, values, index) => {
    if (result[0] > -1) return result;

    const found = values.indexOf(letter);

    return found > -1 ? [Number(index), found] : result;
  }, [-1, -1])
}

console.log(getIndexOfLetter('k'))


来源:https://stackoverflow.com/questions/55144993/get-coordinates-of-an-element-in-multidimentional-array-in-javascript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!