■ いつも迷うので作りました。

 おつかれさまです。@gorolibです。

 Illustrator のスクリプトを作るとき、配列に重複をなくしたいというときは、よくあります。

 配列というのは、[ 1, 1, 2, 3, 3, 4, 4, 4 ]という、情報の羅列です。JavaScriptでは、これをひとまとまりで扱えるのですが、重複しないように保管したい、というときがあります。

 具体的には、[ 1, 1, 2, 3, 3, 4, 4, 4 ]を、[ 1, 2, 3, 4 ]としたいのです。

 普通のJavaScript?では、重複を排除するやり方はたくさんあるのですが、こちらはなんだか冴えません…良いのがないのです(^_^;)

■ 配列と値を投げるイメージ

 そこで、配列と値を投げて、trueかfalseが帰ってくる関数を作りました。コピペで使ってください。

 unifnと命名しましたが、ユニーク(唯一)ファンクションと読んでください。すげえ簡単で恐縮ですが、自分も参考にしたいので…

【投げる側】
if(unifn(値, 配列)){配列.push(値)}

 投げる側は、値と配列を投げます。

 関数側はあればfalseを、なければtrueを返します。

 このif文は、true(配列にない)なら、pushするという書き方です。邪魔くさい場合は、1行にしてもいいです。

if(unifn(値, 配列)){配列.push(値)}

一方、関数側はこちらです。

【関数】
function unifn(u1,u2){
for(var u=0; u<u2.length; u++){
if(u1==u2[u]){return false}
}
return true
}

配列に同じ値があればfalseを返しておわり、なければ最後までループしてtrueを返すという設計です。こちらも、邪魔くさければ、行数減らしてください。

function unifn(u1,u2){
for(var u=0; u<u2.length; u++){if(u1==u2[u]){return false}}
return true
}

以上です。お役に立てれば幸いです!