p5.j​​s // p5.vector.sub的工作原理以及确切的功能2

时间:2018-10-05 07:42:34

标签: javascript java p5.js

我正在观看有关P5.js的新教程视频。

我一直在跟踪,直到看到他调用静态函数P5.VECTOR.SUB(...)

我不明白他在这里做什么,有人可以解释吗

谢谢

video tutorial screenshot

1 个答案:

答案 0 :(得分:0)

the P5.js reference最好回答此类问题。

该页面链接到p5.Vector的参考页面,然后链接到p5.Vector.sub()的参考页面。

该页面解释了发生了什么,重点是我的

  

从一个向量中减去x,y和z分量,从另一个向量中减去一个向量,或减去两个独立的向量。 减去两个向量的方法版本为静态方法,并返回p5.Vector ,其他方法直接作用于向量。有关更多上下文,请参见示例。

它还包含一个代码示例:

function sharedTags(candidates) {
    var results = [];
    var map = {};
    // collect each tag's frequency in a map
    for(let i=0;i<candidates.length;++i){
        let each_candidate = candidates[i];
        if(each_candidate['selected'] === true){
            // collect all unique tags for this candidate in iteration
            let unique_tags = {};

            for(let j=0;j<each_candidate['tags'].length;++j){
                let tag = each_candidate['tags'][j];
                unique_tags[tag] = unique_tags[tag] === undefined ? 1 : unique_tags[tag];
            }

            // merge it's presence with the global "map" variable
            let this_candidate_tags = Object.keys(unique_tags);
            for(let k=0;k<this_candidate_tags.length;++k){
                if(map[this_candidate_tags[k]] === undefined){
                    map[this_candidate_tags[k]] = 1;
                }else{
                    map[this_candidate_tags[k]] += 1;
                }
            }
        }        
    }

    // now check for frequency of each tag. If it equals candidates length, that means it appeared in every candidate.
    var tags = Object.keys(map);
    for(let each_tag in tags){
        if(map[tags[each_tag]] === candidates.length){
            results.push(tags[each_tag]);
        }
    }

    return results;
  }

我还鼓励您放一个示例示例程序来测试正在发生的事情,而不是尝试在较大的程序中理解它。