如何从数组特定索引取值并映射为API调用参数?
解决方案
你的数组是数值+标识的成对结构,includes()只能判断元素是否存在,没法定位它的位置及相邻元素的关联关系,所以得通过遍历+索引定位的方式处理。以下是两种贴合需求的实现方式:
方法1:边遍历边调用(最近匹配)
适合anotherId需要对应最近前一个someId的场景:
const someArr = [1, 'someId', 2, 'anotherId', 3, 'anotherId', 4, 'someId']; let currentSomeId = null; for (let i = 0; i < someArr.length; i += 2) { const value = someArr[i]; const type = someArr[i + 1]; if (type === 'someId') { currentSomeId = value; // 若需要单独处理无对应anotherId的someId,可在此添加 apiFunc(currentSomeId, null); } else if (type === 'anotherId' && currentSomeId !== null) { apiFunc(currentSomeId, value); // 会依次执行 apiFunc(1, 2)、apiFunc(1, 3) } }
方法2:分类收集后组合调用
如果需要所有someId数值与所有anotherId数值两两组合调用:
const someArr = [1, 'someId', 2, 'anotherId', 3, 'anotherId', 4, 'someId']; const someIds = []; const anotherIds = []; for (let i = 0; i < someArr.length; i += 2) { const value = someArr[i]; const type = someArr[i + 1]; if (type === 'someId') { someIds.push(value); } else if (type === 'anotherId') { anotherIds.push(value); } } // 两两组合执行API调用 someIds.forEach(someId => { anotherIds.forEach(anotherId => { apiFunc(someId, anotherId); // 会执行 apiFunc(1,2)、apiFunc(1,3)、apiFunc(4,2)、apiFunc(4,3) }); });
内容的提问来源于stack exchange,提问作者Mister Mister
相关产品推荐
相关产品推荐

