-1
var currentbutton = {};
function setPreset(obj) {
    try{
        if(obj.name===name && obj.value===value){
            //log.error("preset array's OID at position ["+index+"]     is"+presets[index].name +" and the value stored is "+presets[index].value);
            currentbutton.name=obj.name;
            currentbutton.value=obj.value;
            log.error("currentbutton name= "+currentbutton.name+     "currentbutton value= " + currentbutton.value );
        }
        else
            log.error("adklafjklajkl");
    }
    catch(ie){
        log.error("couldn't set preset");
    }

presets.forEach(function(obj));

私が書いたこのコードには間違いがあるに違いないことはわかっています。まず第一に、関数はオブジェクトを引数として受け取る必要があると言われましたが、それを関数に渡す方法がわかりません。Google を試しましたが、関数がオブジェクトを引数として受け取ることができるかどうかに関する関連情報は見つかりませんでした。presets は、基本的に 2 つのプロパティ (「名前」と「値」と呼ばれる) を持つオブジェクトを含む配列です。配列 Presets は、forEach を使用して列挙された変数のリストを調べ、引数 obj の名前と値が同一であるかどうかを比較します。配列内に格納されているオブジェクトのいずれかが同一である場合、現在のボタンの名前と値を引数 obj 内のものに設定します。次に、心配する必要のない現在のボタンで動作する他の関数を用意します。

4

3 に答える 3

2

あなたは仕組みをよく理解していませんforEach。このforEachメソッドは、関数を引数として取ります。

[1,2,3].forEach(function(item) {
    alert(item);
});

渡されたその関数にforEachは、引数自体が与えられます。ここでは、名前を付けましたitem。このforEachメソッドは関数を繰り返し呼び出し、呼び出されるたびに配列の連続するメンバーを最初の引数として提供します。

ここで、リテラル関数を渡す代わりに、変数を使用して関数を保持できます。

var alertStuff = function(item) {
    alert(item);
}

次に、その関数を (変数名で参照して) で使用しますforEach

[1,2,3].forEach(alertStuff);

// is the same as...
[1,2,3].forEach(function(item) {
    alert(item);
});

したがって、 を使用しますpresets.forEach(setPreset);

于 2013-10-23T20:07:37.883 に答える