创建一个具有两个参数的函数,参数a将是一个数组,参数b将在该数组中找到一个元素

时间:2019-04-23 15:38:56

标签: javascript arrays function for-loop

下面给出了开始的信息,但似乎无法弄清楚如何完成此操作。本质上,如果我要调用myTest([one, two, three], 2);,它应该返回元素three。必须使用 for循环来找到我的解决方案。

function myTest(a, b){
  for (let i = 0; i < a.length; i++)

如果我调用myTest([one, two, three], 2);,它将返回元素three

假设以上是正确的调用方式。

4 个答案:

答案 0 :(得分:1)

您可以将数组的索引设为property accessor

public class SimpleDialogViewModel extends ViewModel {

    private Subject<Integer> actionSubject;

    SimpleDialogViewModel() {
        actionSubject = PublishSubject.create();
    }

    public void onClickYes() {
        actionSubject.onNext(AlertDialog.BUTTON_POSITIVE);
    }

    public void onClickNo() {
        actionSubject.onNext(AlertDialog.BUTTON_NEGATIVE);
    }

    public Observable<Integer> actionStream() {
        return actionSubject;
    }
}

答案 1 :(得分:1)

如果我收到您的问题,则可以简单地return a[b];,而无需使用任何for循环。

答案 2 :(得分:1)

function myTest(a, b){
  for (let i = 0; i < a.length; i++) {
     if (a[i] == a[b]) {return a[i]}
  }
}

这应该有效。

答案 3 :(得分:0)

因此,您必须将第一个参数“强制”为数组或至少对其进行检查:

function myTest(arrayParam, arrayIndex) {
    if (typeof arrayParam != typeof[]) {
        console.log('wrong parameter ' + arrayParam + ' must be an Array');
        return;
    }
    return arrayParam[arrayIndex]; /** eventualy you've to check index is in array range so check the length of the array too*/
}

JavaScript没有类型变量,因此必须添加所有检查才能使用类型值。值wo的typeof返回类型也可以是对象。

edit:甚至更简单,并保证所有人都具有“正确”类型:

myTest(arr, idx) {
    if (arr[idx]) {
        return arr[idx];
    } //-- will simply return nothing if parameter not fit or idx out of array size
}

更简单但不那么精确,因为您可以拥有它并且仍然有返回值(不能确保第一个参数是一个数组,第二个参数是一个整数值作为索引):

myTest({test:'some value'}, 'test'); //-- who will return 'some value'

在第二个示例中,我想强调其他响应也不会是错误,也不会使用数组。