如何在数组中的每个索引执行函数?
我有一个功能(当前),因为闭合,我会记住它在函数调用上返回(从数组)返回的最后一个索引,然后从下一个索引返回下一个值。
function getCurrentValue(values) {
let index = -1;
let l = values.length;
function increment() {
++index;
if (index < l) {
return values[index];
} else {
index = -1;
++index;
return values[index];
}
}
return increment;
}
我正在做的是,我正在进入一个圆圈的函数:
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90];
degree() // returns 0
degree() // returns 315
我想要的是传递另一个数组,这是米的距离范围:
distances = [75, 175, 275, 375, 475];
我想要的是当前的度量值当我们返回后,已将每个距离都应用到每个程度。
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90], [75, 175]);
学位应该表现得像:
degree(); // returns 0;
degree(); // returns 0;
degree(); // returns 0;
degree(); // returns 315;
degree(); // returns 315;
degree(); // returns 315;
我尝试过:
function getCurrentValue(values, helper) {
let index = -1;
let l = values.length;
var temp;
function increment() {
++index;
if (index < l) {
return values[index]
} else {
index = -1;
++index;
return values[index]
}
}
if (typeof helper != 'undefined') {
for (let i = 0; i < helper.length; i++) {
console.log('temp', temp)
return temp = values[index];
}
}
return increment;
}
但是那无效。任何帮助将不胜感激!
更新 看到最终将做什么的上下文可能会很有帮助:
我想在中心向外添加标记在地图上的一个圆圈。我应该选择的学位应该放置你的标记:
function setMarkerToCenterOfSegment(lat, lng, degree, distance) {
return GeometryUtil.destination(L.latLng(lat, lng), degree(), distance());
}
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90], [75, 175, 275, 375, 475]);
let distance = getCurrentValue([75, 175, 275, 375, 475])
{markers.length && markers.map((marker, index) => {
return
<Marker
key={index}
position={setMarkerToCenterOfSegment(...initRadiusForCircle, degree, distance)} />
}
)}
I have a function (which currently) because of a closure will remember the last index it returned (from an array) on a function call and return the next value from the next index.
function getCurrentValue(values) {
let index = -1;
let l = values.length;
function increment() {
++index;
if (index < l) {
return values[index];
} else {
index = -1;
++index;
return values[index];
}
}
return increment;
}
What I am doing is I'm passing into the function an array of degrees of a circle:
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90];
degree() // returns 0
degree() // returns 315
What i'd like is to pass in another array which is a range of distances of meters:
distances = [75, 175, 275, 375, 475];
What I want is the current degree value to increment when we have returned have applied each distance to every degree.
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90], [75, 175]);
So degree should behave like:
degree(); // returns 0;
degree(); // returns 0;
degree(); // returns 0;
degree(); // returns 315;
degree(); // returns 315;
degree(); // returns 315;
I tried:
function getCurrentValue(values, helper) {
let index = -1;
let l = values.length;
var temp;
function increment() {
++index;
if (index < l) {
return values[index]
} else {
index = -1;
++index;
return values[index]
}
}
if (typeof helper != 'undefined') {
for (let i = 0; i < helper.length; i++) {
console.log('temp', temp)
return temp = values[index];
}
}
return increment;
}
But that didn't work. Any help would be appreciated!
UPDATE
Might be helpful to see the context of what this will eventually do:
I have markers I'd like to add to a circle on a map from the center outwards. Thee markers should be laid down along degrees I choose:
function setMarkerToCenterOfSegment(lat, lng, degree, distance) {
return GeometryUtil.destination(L.latLng(lat, lng), degree(), distance());
}
let degree = getCurrentValue([0, 315, 270, 225, 180, 135, 90], [75, 175, 275, 375, 475]);
let distance = getCurrentValue([75, 175, 275, 375, 475])
{markers.length && markers.map((marker, index) => {
return
<Marker
key={index}
position={setMarkerToCenterOfSegment(...initRadiusForCircle, degree, distance)} />
}
)}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论