比如
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
求指教
下面的写法应该能满足你的需求
形如
a.b
的表達式當中,b
只能是一個標識符。換句話說,a.b[c]
會被解釋爲(a.b)[c]
。而根據定義,
a.b
等價於a['b']
,所以當屬性名是另一表達式運算結果時,請使用a['b']
。req_arr[arr[key]]
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){
}
对于第一种方式:
req_arr.arr相当于req_arr['arr'],如果数组中没有键为arr,就是undefined
对于第二种方式:
道理其实是一样的,req_arr.item相当于req_arr['item'],所以也是undefined
req_arr.item中的这个item并不是前一句item = arr[key]取到的值
使用[]来读取属性,因为
for in
中的key
是字符串,不能用点语法来读取。console.log(req_arr.arr[key]);这句,把一个值当成变量来用你觉得语法对吗?req_arr[arr[key]],这样不就很简单实现了吗
console.log(req_arr.item)这句,你本意是想把item的值转换为变量来使,但是js会解析为req_arr下面的item属性,并不是你所想要的。多体会体会基本语法!
大概就是这样.