javascript - 关于js一个小问题 求大神指教
高洛峰
高洛峰 2017-04-10 15:06:57
0
11
396

比如

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(11)
巴扎黑

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

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']

左手右手慢动作

req_arr[arr[key]]

刘奇

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

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

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

大家讲道理
var arr = ["haha","xixi"];
for (var key in arr){
    console.log(req_arr[arr[key]]);
}
巴扎黑

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

console.log(req_arr[key]);

}

黄舟

对于第一种方式:
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属性,并不是你所想要的。多体会体会基本语法!

刘奇
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

大概就是这样.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!