使用另一个阵列访问2D阵列

时间:2018-04-13 13:45:35

标签: javascript

我有一个2D数组,想要使用另一个数组访问,例如:

var arr = [['one','two'],['three','four']];
var arr2 = [1,1];

我希望在arr [arr2 [0]] [arr2 [1]]中得到值。是否有另一种获取价值的方法,因为如果我这样做,那行就会变得极长且难以阅读。

类似的东西:

arr[arr2]

我知道这不起作用,但JavaScript中有类似内容吗?

5 个答案:

答案 0 :(得分:1)

您可以使用索引来减少数组,使用默认数组来存在不存在的内部数组。



function getValue(array, indices) {
    return indices.reduce((a, i) => (a || [])[i], array);
}

var array = [['one', 'two'], ['three', 'four']],
    indices = [1, 1];

console.log(getValue(array, indices));




答案 1 :(得分:0)

使用arr[arr2[0]][arr2[1]]代替arr[arr2]。因为,在arr的嵌套数组中只有两个数组值,您可以为0指定索引1arr2作为arr的索引。其格式为arr[index1][index2]



var arr = [['one','two'],['three','four']];
var arr2 = [1,1];

console.log(arr[arr2[0]][arr2[1]]);




答案 2 :(得分:0)

reducetry/catch一起使用,以确保不会出现会引发错误的值(例如arr2 = [1,1,2,3,4]

function evaluate(arr1, arr2)
{
    try
    {
      return arr2.reduce( (a, c) => a[c], arr);
    }
    catch(e) {}
}

<强>演示

&#13;
&#13;
function evaluate(arr1, arr2) {
  try {
    return arr2.reduce((a, c) => a[c], arr)
  } catch (e) {}
}

var arr = [['one','two'],['three','four']];
var arr2 = [1,1];

console.log(evaluate(arr, arr2))
&#13;
&#13;
&#13;

答案 3 :(得分:0)

您可以在arr2上使用Array#reduce并将arr作为初始数组传递。

<强>演示

&#13;
&#13;
let arr = [['one','two'],['three','four']],
    arr2 = [1,1],
    res = arr2.reduce((a,c) => a[c], arr);

console.log(res);
&#13;
&#13;
&#13;

答案 4 :(得分:0)

这是另一种选择:

一个简单的for-loop

&#13;
&#13;
var arr = [ ['one', 'two'], ['three', 'four'] ],
    indexes = [1, 1];

Array.prototype.getFrom = function(indexes) {
  var current;
  for (var index of indexes) current = current ? current[index] : this[index];
  return current;
}

console.log(arr.getFrom(indexes));
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
<script src="https://codepen.io/egomezr/pen/dmLLwP.js"></script>
&#13;
&#13;
&#13;