在包含对象数组的对象内定义一个方法(javascript)

时间:2018-08-03 22:22:38

标签: javascript arrays object methods

我创建了如下的电影和方法对象

    var movies = [
          {
            aa : "value01"
            bb : 6.5
          },
          {
            aa : "value02"
            bb : 6
          },
          {
            aa : "value02"
            bb : 7.5
          },
          percentage:function(movieRating, scale){
            return (movieRating/scale) * 100;
          }
    ]

我尝试使用以下方法访问对象和方法;

    theRating = (movies.percentage(movies[0].bb,10));

但是运行脚本会给我一个;

    Uncaught SyntaxError: Unexpected token :

实际代码在https://pastebin.com/9tvrSVJ1

我所做的工作可以在https://pastebin.com/LkCwzWXn

中找到

有人可以指出我的第一版代码有误吗?

谢谢。

3 个答案:

答案 0 :(得分:2)

它不起作用的原因是因为您试图将成员添加为数组,就好像它是对象属性一样。如果您需要向数组添加函数,可以这样做:

(还要注意,您收到的错误是因为电影对象中的属性没有用逗号分隔。)

var movies = [
      {
        aa : "value01",
        bb : 6.5
      },
      {
        aa : "value02",
        bb : 6
      },
      {
        aa : "value02",
        bb : 7.5
      },
      function (movieRating, scale){
        return (movieRating / scale) * 100;
      }
]

然后可以这样调用该函数:

movies[3](1, 10);

我不确定您的实现方式,但是如果将索引更改,则将函数保留在数组中似乎有些奇怪。

答案 1 :(得分:0)

尝试: 各种电影= [           {             aa:“ value01”,             bb:6.5           },           {             aa:“ value02”,             bb:6           },           {             aa:“ value02”,             bb:7.5           },           {             百分比:功能(电影评分,比例){                 回报率(电影评分/比例)* 100;               }           }

]

,并将评分称为“评分=电影[3] .percentage(电影[0] .bb,10)

答案 2 :(得分:0)

或者,如果您(像我一样)不喜欢我以前的回答,并且不想在数组内部调用该函数,则可以像在其他函数上一样在数组外部定义它:

_

然后您可以像这样调用var movies = [ { aa : "value01", bb : 6.5 }, { aa : "value02", bb : 6 }, { aa : "value02", bb : 7.5 } ]; function percentage (movieRating, scale) { return (movieRating / scale) * 100; }; 变量来使其工作:

theRating