javascript 如何return数组里每个值

if(wqe !== null){
    if(wqe.length > 1){
      for(var i=0;i < wqe.length; i++){
        console.log(wqe[i])
        return wqe[i]
      }
     
    }
    return wqe
  }

一段code如上,

我去判断某数组长度如果大于一,就跑for把每个值抓出来

小于一,也就是只有一个的话,直接return值

现在有一个问题是

如果它长度是大于一,假设是这样['aaa','bbb','nnn']

我的return wqe[i]只会传出数组中的第一个值,也就是aaa

后面bbb、nnn就不传了 我想要它把同数组里每个值都依序传出来

依序传出来就是 我想要它先传aaa,再传bbb,再传nnn这样,而不是一次传出aaa,nnn,nnn

大概就是多次调用,每次返回的不一样的意思吧


主要是我要在html去接传来的值 透过传来的值去显示数据

html上大概是这样 {{ test[returnName()][0] }}

会根据传来的值去抓某数组内的资料

返回后应该要这样

{{ test['aaa'][0] }}
{{ test['bbb'][0] }}
{{ test['ccc'][0] }}

而不是

{{ test['aaa,bbb,ccc'][0] }}

这该怎么改?

阅读 3.3k
3 个回答

这实际问题应该是想问:某语句的执行结果随执行次数而改变,用闭包就行了,简单粗暴点可以用全局变量记录执行次数

var wqe = ["aaa","bbb","ccc"];

var returnName = ((arr)=>{
  let i=0;
  return () => arr[i++]
})(wqe);

console.log(returnName()); //aaa
console.log(returnName()); //bbb
console.log(returnName()); //ccc

依序传出来什么意思, 传出来不还是 wqe这个数组么

------------------- 更新
按照题主的意思,这个应该能满足你

var qwe = [1, 2 ,3]
function* main() {
    for (var i = 0; i < qwe.length; i++) {
        yield qwe[i]
    }
}
var mainInstance = main()
console.log(mainInstance.next().value)  // 1
console.log(mainInstance.next().value)  // 2
console.log(mainInstance.next().value)  // 3
function test(arr){
    return arr.shift()
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题