【发布时间】:2021-01-11 15:01:38
【问题描述】:
所以我有一个嵌套的对象数组,其结构如下:
let pages = [
[
{
leftCol: [
{ height: 34, id: 10 },
{ height: 18, id: 20 },
{ height: 45, id: 30 },
{ height: 59, id: 40 },
],
},
{
rightCol: [
{ height: 34, id: 50 },
{ height: 34, id: 60 },
{ height: 34, id: 70 },
],
},
],
[
{
leftCol: [
{ height: 34, id: 80 },
{ height: 18, id: 90 },
{ height: 45, id: 100 },
{ height: 59, id: 110 },
],
},
{
rightCol: [
{ height: 34, id: 120 },
{ height: 34, id: 130 },
{ height: 34, id: 140 },
],
},
],
];
现在我想创建一个方法,该方法可以基于作为参数给出的id 返回元素的索引,并返回外部元素的索引。例如:
findIdx(pages, 30) 将返回元素 (2) 的 idx 以及外部数组 (0) 的 idx。
findIdx(pages, 110) 将返回元素 (3) 的 idx 以及外部数组 (1) 的 idx。
我能想到的最好的方法是:
function getIdxAndPageNumOfColumn(array, columnIdx, payloadId) {
let idx;
let pageNum;
for (pageNum = 0; pageNum < array.length; pageNum++) {
let leftCol = array[pageNum][0].leftCol;
let rightCol = array[pageNum][1].rightCol;
let column = columnIdx === 0 ? leftCol : rightCol;
idx = column.findIndex(item => item.id == payloadId);
if (idx > -1) break;
}
return {
idx: idx,
pageNum: pageNum,
};
}
但这需要我指定 columnIdx 作为参数(0 的 columnIdx 将始终等于 pages 数组中的 leftCol,而 1 的 columnIdx 将等于 rightCol )。出于某种原因,我无法让它正常工作。任何帮助将不胜感激。
【问题讨论】:
-
为什么不获取三个索引,因为三个嵌套数组?
标签: javascript arrays vue.js object multidimensional-array