我收到错误,因为JavaScript不喜欢videos.id中的点。有办法解决这个问题吗?
假设我有一个数组:
var videos = [
{
"id": 65432445,
"title": "The Chamber"
},
{
"id": 675465,
"title": "Fracture"
},
{
"id": 70111470,
"title": "Die Hard"
},
{
"id": 654356453,
"title": "Bad Boys"
}
];
//这是一个函数
return videos.map(function(vids){
return {videos.id : vids.title}; // videos.id does not work
});
答案 0 :(得分:0)
您不能将变量作为对象键与速记对象构造函数结合使用。您需要先构造对象,然后使用方括号表示法:
return videos.map(function(vid){
var ret = {};
ret[vid.id] = vid.title;
return ret;
});
但这会给你一个类似
的结构[{675465: "The Chamber"}, ...]
你可能想做这样的事情
var vids = {};
videos.forEach(function (vid) {
vids[vid.id] = vid.title;
});
导致这样的结构:
{675465: "The Chamber", ...}
允许您通过ID访问视频:
console.log(vids[675465]); // outputs "The Chamber"
答案 1 :(得分:0)
在地图文字中,键始终被解释为字符串。使用动态密钥的唯一方法是使用括号表示法。
你可以试试这个:
videos.map(function(vids) {var x={}; x[vids.id]=vids.title; return x; })
答案 2 :(得分:-1)
这是因为videos
是一个对象数组,每个对象都有id
属性。它没有自己的id
。
您访问其中一个元素的id
的方式如下:
videos[i].id
我认为这就是你想要的:
return videos.map(function(vids){
var vid = {};
vid[vids.id] = vids.title;
return vid;
});