簡體   English   中英

在包含對象數組的對象內定義一個方法(javascript)

[英]define a method inside an object containing arrays of objects (javascript)

我創建了一個對象影片和方法,如下所示;

    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中找到

誰能指出我的第一版代碼錯誤。

提前致謝。

它不起作用的原因是因為您試圖將成員添加為數組,就好像它是對象屬性一樣。 如果您需要向數組添加函數,可以這樣做:

(還要注意,您收到的錯誤是因為電影對象中的屬性沒有用逗號分隔。)

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);

我不確定您的實現方式,但是如果將索引更改,則將函數保留在數組中似乎有些奇怪。

試試看:var電影= [{aa:“ value01”,bb:6.5},{aa:“ value02”,bb:6},{aa:“ value02”,bb:7.5},{百分比:function(movieRating,比例){回報率(電影評分/比例)* 100; }}

]

並將評分定為theRating =電影[3] .percentage(電影[0] .bb,10)

另外,如果您(像我一樣)不喜歡我以前的答案,並且不想在數組內調用該函數,則可以像在其他函數上一樣在數組外定義它:

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變量起作用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM