JavaScript - Return 来自一个数组的单个值,在调用另一个数组的 for-of 循环内
JavaScript - Return individual values from one array, inside of a for-of loop calling another array
我从一个函数返回两个值,svcCenterBands
sortedBands
,并在另一个函数的 for of
循环中调用 sortedBands
。
svcCenterBands
是 getMileageBand
函数内部的一个对象数组,returns 一个唯一对象数组,这些对象是代表英里范围的字符串值。
const getMileageBand = refSrcData => {
const mileageBand = refSrcData.data.map(e => e['97']); // Mileage Band Name
// Reduce the array to only unique values, no repeats
const svcCenterBands = mileageBand.reduce((unique, i) => {
if (!unique.some(obj => obj.label === i.label && obj.value === i.value)) {
unique.push(i);
}
return unique;
}, []);
// Get only the values from svcCenterBands
const numberedBands = svcCenterBands
.map(band => Object.values(band))
.join()
.split('-')
.map(str => str.split(',')[0]);
// Sort numberedBands in ascending order
const sortedBands = numberedBands
.map(Number)
.sort((first, next) => first - next);
console.log(svcCenterBands, sortedBands);
return [svcCenterBands, sortedBands];
};
sortedBands
更进一步,采用 svcCenterBands
,仅获取它的最后一个值并将其转换为数字并对其进行排序。例如,如果 svcCenterBands
returns 的值 ["0-30"]
,sortedBands
会在数组中获取该字符串并提取连字符后的数字,将其转换为数字并排序所有数组值按升序排列。
在另一个函数内部,我通过 for of
循环调用 getMileageBand
和 运行 sortedBands
(getMileageBand(facData)[1]
)。
const mileageRanges = getMileageBand(facData)[0];
const mileageBand = getMileageBand(facData)[1];
// generate radius for each mileage band, mileage === coordinates
for (mileage of mileageBand) {
// for (mileage of getMileageBand(facData)) {
...
// console.log(mileageRanges.map(range => range.value));
const mileageValue = `${mileageRanges.map(range => range.value)} miles`;
...
我可以获得 sortedBands
的值没问题,这是我在地图上生成径向带所需要的。
但是我试图在 for (mileage of mileageBand)
循环中遍历 svcCenterBands
的值,但是当我在 mileageRanges
中记录时,我得到了对象数组mileageBand
带循环。
如果我使用 for of
索引记录 mileageRange[mileage]
,我只会得到 mileageRange
中的第一个值,其余的未定义。
我想看到的是对象数组中按范围排列的值,我可以在调用 getMileageBand
时得到这些值,但我无法在 [=17] 中得到这些值=]循环。
这就是我试图进入 for of
循环的内容:
这是在我的屏幕上显示在我的地图下方的带有径向带的内容。
最终,我希望每张卡片都显示 0-30、31-60 等序列,而不是每张卡片中显示所有值。
我无法包含我所有的代码来测试,因为它有太多太多的环境变量来提取我从数据库中提取的数据,所以我包含了尽可能多的代码来备份我的问题。
您似乎想从 mileageRanges 中获取元素,该元素与 for..of 循环中的 mileageBand 的当前元素具有相同的索引。我建议在这种情况下不要使用 for..of,因为我不相信它提供了索引。这是一个简单的for循环。
const [mileageRanges, mileageBand] = getMileageBand(facData); // just call that expensive function once.
for (let i=0; i < mileageBand.length; i++) {
const mileage = mileageBand[i];
const mileageRange = mileageRanges[i].value;
}
我从一个函数返回两个值,svcCenterBands
sortedBands
,并在另一个函数的 for of
循环中调用 sortedBands
。
svcCenterBands
是 getMileageBand
函数内部的一个对象数组,returns 一个唯一对象数组,这些对象是代表英里范围的字符串值。
const getMileageBand = refSrcData => {
const mileageBand = refSrcData.data.map(e => e['97']); // Mileage Band Name
// Reduce the array to only unique values, no repeats
const svcCenterBands = mileageBand.reduce((unique, i) => {
if (!unique.some(obj => obj.label === i.label && obj.value === i.value)) {
unique.push(i);
}
return unique;
}, []);
// Get only the values from svcCenterBands
const numberedBands = svcCenterBands
.map(band => Object.values(band))
.join()
.split('-')
.map(str => str.split(',')[0]);
// Sort numberedBands in ascending order
const sortedBands = numberedBands
.map(Number)
.sort((first, next) => first - next);
console.log(svcCenterBands, sortedBands);
return [svcCenterBands, sortedBands];
};
sortedBands
更进一步,采用 svcCenterBands
,仅获取它的最后一个值并将其转换为数字并对其进行排序。例如,如果 svcCenterBands
returns 的值 ["0-30"]
,sortedBands
会在数组中获取该字符串并提取连字符后的数字,将其转换为数字并排序所有数组值按升序排列。
在另一个函数内部,我通过 for of
循环调用 getMileageBand
和 运行 sortedBands
(getMileageBand(facData)[1]
)。
const mileageRanges = getMileageBand(facData)[0];
const mileageBand = getMileageBand(facData)[1];
// generate radius for each mileage band, mileage === coordinates
for (mileage of mileageBand) {
// for (mileage of getMileageBand(facData)) {
...
// console.log(mileageRanges.map(range => range.value));
const mileageValue = `${mileageRanges.map(range => range.value)} miles`;
...
我可以获得 sortedBands
的值没问题,这是我在地图上生成径向带所需要的。
但是我试图在 for (mileage of mileageBand)
循环中遍历 svcCenterBands
的值,但是当我在 mileageRanges
中记录时,我得到了对象数组mileageBand
带循环。
如果我使用 for of
索引记录 mileageRange[mileage]
,我只会得到 mileageRange
中的第一个值,其余的未定义。
我想看到的是对象数组中按范围排列的值,我可以在调用 getMileageBand
时得到这些值,但我无法在 [=17] 中得到这些值=]循环。
这就是我试图进入 for of
循环的内容:
这是在我的屏幕上显示在我的地图下方的带有径向带的内容。
最终,我希望每张卡片都显示 0-30、31-60 等序列,而不是每张卡片中显示所有值。
我无法包含我所有的代码来测试,因为它有太多太多的环境变量来提取我从数据库中提取的数据,所以我包含了尽可能多的代码来备份我的问题。
您似乎想从 mileageRanges 中获取元素,该元素与 for..of 循环中的 mileageBand 的当前元素具有相同的索引。我建议在这种情况下不要使用 for..of,因为我不相信它提供了索引。这是一个简单的for循环。
const [mileageRanges, mileageBand] = getMileageBand(facData); // just call that expensive function once.
for (let i=0; i < mileageBand.length; i++) {
const mileage = mileageBand[i];
const mileageRange = mileageRanges[i].value;
}