繁体   English   中英

JavaScript:如何在对象键中引用对象属性?

[英]JavaScript: How do I reference an object property in an object key?

我收到一个错误消息,因为JavaScript不喜欢video.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
});

您不能将变量用作速记对象构造函数的对象键。 您需要先构造对象,然后使用方括号表示法,如下所示:

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"

在地图文字中,键始终被解释为字符串。 使用动态键的唯一方法是使用括号符号。

您可以尝试以下方法:

videos.map(function(vids) {var x={}; x[vids.id]=vids.title; return x; })

这是因为videos是一个对象数组,每个对象都有一个id属性。 它没有自己的id

您访问其元素之一的id的方式如下:

videos[i].id

我认为这就是您想要的:

return videos.map(function(vids){
    var vid = {};
    vid[vids.id] = vids.title; 
    return vid;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM