-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 是一个数组,其中包含基本上具有两个属性(称为“名称”和“值”)的对象,数组 Presets 使用 forEach 遍历其枚举变量列表,并比较参数 obj 的名称和值是否相同存储在数组中的任何对象,如果它们相同,则将当前按钮的名称和值设置为参数 obj 中的值。然后我们将有其他功能将在 currentbutton 上运行,我不必担心。

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 回答
0

定义一个接受参数的函数

function myNewFunc(obj){
  alert(obj.myFirstProp);
}

定义一个我们将作为参数传递给上述函数的对象

var myObject = {
    myFirstProp: "testing"
};

调用函数并将对象作为参数传递

myNewFunc(myObject);
于 2013-10-23T20:01:15.047 回答
0

你的括号被搞砸了,你调用forEach错误。

var presets = [
  {name:'a', value:1},
  {name:'b', value:2},
  {name:'c', value:3},
];
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 { // syntax error, opening { of else block was missing
      log.error("adklafjklajkl");
    }
  } // syntax error, closing } of try block was missing
  catch(ie){
    log.error("couldn't set preset");
  }
} // syntax error, closing } of function was missiong

presets.forEach(setPreset);
于 2013-10-23T20:01:26.090 回答