首页 > 关于js一个小问题 求大神指教

关于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 求指教


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

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


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

console.log(req_arr[key]);

}


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

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

大概就是这样.


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

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

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


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

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

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

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


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


数组遍历请用for,for in用来遍历obj,性能远不如for快


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

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


req_arr[arr[key]]

【热门文章】
【热门文章】