下面给出了开始的信息,但似乎无法弄清楚如何完成此操作。本质上,如果我要调用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
。
假设以上是正确的调用方式。
答案 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'
在第二个示例中,我想强调其他响应也不会是错误,也不会使用数组。