search

Home  >  Q&A  >  body text

javascript - 关于js一个小问题 求大神指教

比如

var arr = ["haha","xixi"];
for (var key in arr){
    console.log(req_arr.arr[key]);
}

这只是函数中的一部分 其中 req_arr 是一个对象 arr 是一个一維数组 这样就会报

Cannot read property '0' of undefined

如果这样

for (var key in arr){
    var item = arr[key];
    console.log(req_arr.item);
}

item 就是 undefined

有没有什么办法能将 req_arr.arr[key] 变成 req_arr.haha 求指教

高洛峰高洛峰2902 days ago412

reply all(11)I'll reply

  • 巴扎黑

    巴扎黑2017-04-10 15:08:57

    下面的写法应该能满足你的需求

    for (var key in arr){
      var item = arr[key];
      console.log(req_arr[item]);
    }
    

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:08:57

    形如 a.b 的表達式當中,b 只能是一個標識符。換句話說,a.b[c] 會被解釋爲 (a.b)[c]

    而根據定義,a.b 等價於 a['b'],所以當屬性名是另一表達式運算結果時,請使用 a['b']

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:08:57

    req_arr[arr[key]]

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:08:57

    arr是一个数组,可能无法达到题主想要的那种req_arr.haha,
    如果一定要使用req_arr.haha来访问,题主可以尝试把数组改成对象,比如req = {haha:"haha"},

    如果题主只是想看看数组中是否包含这个元素,那就用js数组的indexOf方法即可,比如req_arr.indexOf("haha"),如果有就会返回索引值,如果没有就返回-1

    问题中的arr与req_arr是相同的数组吗?

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:08:57

    var arr = ["haha","xixi"];
    for (var key in arr){
        console.log(req_arr[arr[key]]);
    }
    

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:08:57

    这就可以了吧
    for (var key in arr){

    console.log(req_arr[key]);
    

    }

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:08:57

    对于第一种方式:
    req_arr.arr相当于req_arr['arr'],如果数组中没有键为arr,就是undefined

    对于第二种方式:
    道理其实是一样的,req_arr.item相当于req_arr['item'],所以也是undefined
    req_arr.item中的这个item并不是前一句item = arr[key]取到的值

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:08:57

    使用[]来读取属性,因为for in 中的key是字符串,不能用点语法来读取。

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:08:57

    console.log(req_arr.arr[key]);这句,把一个值当成变量来用你觉得语法对吗?req_arr[arr[key]],这样不就很简单实现了吗

    console.log(req_arr.item)这句,你本意是想把item的值转换为变量来使,但是js会解析为req_arr下面的item属性,并不是你所想要的。多体会体会基本语法!

    reply
    0
  • 怪我咯

    怪我咯2017-04-10 15:08:57

    jsvar obj = {
        "aaa":"a",
        "bbb":"b"
    };
    var key_a = "aaa";
    console.log(obj.aaa); //a
    console.log(obj["aaa"]); //a
    console.log(obj[key_a]); //a
    console.log(obj["a"+"a"+"a"]); //a
    

    大概就是这样.

    reply
    0
  • Cancelreply