Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建for循环以在Javascript中定位元素_Javascript_Json_For Loop_Position_Sketchapp - Fatal编程技术网

创建for循环以在Javascript中定位元素

创建for循环以在Javascript中定位元素,javascript,json,for-loop,position,sketchapp,Javascript,Json,For Loop,Position,Sketchapp,我正在边做边学编程,刚刚意识到我缺乏一些关于循环的基础知识 目前,我正在为Sketch(一个面向设计师的程序)创建一个插件。 基本上,我有一个符号库,它应该根据每个符号的单独规则放在画板上。从API中,我得到了这些符号在JSON中的位置。 这就是我的JSON的结构: { boundingBox = { height = "0.109773919"; left = "0.0224986672"; top = "0.005579207"; width = "0

我正在边做边学编程,刚刚意识到我缺乏一些关于循环的基础知识

目前,我正在为Sketch(一个面向设计师的程序)创建一个插件。 基本上,我有一个符号库,它应该根据每个符号的单独规则放在画板上。从API中,我得到了这些符号在JSON中的位置。 这就是我的JSON的结构:

{
boundingBox =     {
    height = "0.109773919";
    left = "0.0224986672";
    top = "0.005579207";
    width = "0.9701756";
};
probability = "0.9641495";
tagId = "013a0b7b-2b1d-4c18-8de7-fd37c91aa513";
tagName = navtop;
}
它当前的功能:将标记名与我的本地符号库(创建符号)相匹配。现在我想添加另一个函数“positionInArtboard”

**我怎样才能更优雅地组合这两个函数,并从JSON响应传递数据?如何保持每个对象的帧规则,而不必一直重复块?**

对于这些基本问题,我很抱歉。如果有人能推荐一些资源,让我可以阅读更多关于这些具体操作的信息,那也太好了

提前非常感谢!
最好的方法是,js函数中的C

参数也可以是对象或函数,所以您可以将整个
boundingBox
对象传递给您的函数。您还可以使用for
数据来提高
for
循环的可读性。预测
此函数
positionInArtboard
是由某个ide向导创建的吗?它已经包含参数
标记名
x
y
,但您只传递第一个参数(
data.predictions[i]。标记名
),而不使用它anyway@barbsan非常感谢您的快速回复!因此,如果我理解正确,在
positionInArtboard(data.predictions[I].tagName)
中,我还会像这样传递坐标:
positionInArtboard(data.predictions[I].tagName,boundingBox.left,boundingBox.top)
?如果前一行是
var boundingBox=data.predictions[I].boundingBox
应该可以,否则你必须写全名:
data.predictions[i].boundingBox.left
等等。
var matchSymbol = function(data) {
   for (var i = 0; i < data.predictions.length; i++) {
   var percentage = parseFloat(data.predictions[i].probability);
   if (data.predictions[i].probability > 0.5) {
        createSymbol(data.predictions[i].tagName);
        positionInArtboard(data.predictions[i].tagName);
        }
    }
}

function positionInArtboard (tagName, x, y) {
var tabbars = document.getLayersNamed("tabbar")
var tabbar = tabbars[0];
var tabbarFrame = new sketch.Rectangle(tabbar.frame);
tabbarFrame.x = 0;
tabbarFrame.y = 618;
tabbar.frame = tabbarFrame

var navtops = document.getLayersNamed("navtop")
var navtop = navtops[0];
var navtopFrame = new sketch.Rectangle(navtop.frame);
navtopFrame.x = 0;
navtopFrame.y = 0;
navtop.frame = navtopFrame;
}
var buttons = document.getLayersNamed("button")
var button = buttons[0];
var buttonFrame = new sketch.Rectangle(button.frame);
navtopFrame.x = data.predictions[i].boundingBox.left * 375;
navtopFrame.y = data.predictions[i].boundingBox.top * 667;
navtop.frame = navtopFrame;