我正在尝试为 iTunes 编写一个 JS 脚本,以创建歌曲总数大于 7 的任何歌曲的播放列表(即 LP 而非 EP)。我以前从未使用 Microsoft 的 JScript 编写过任何东西,所以我在很大程度上是在学习如何即时使用它。当我只想要一个索引值时,我不明白为什么需要一个对象:albumKey = checkAlbumExists(albumName, albumArray);
var iTunesApp = WScript.CreateObject("iTunes.Application");
var mainLibrary = iTunesApp.LibraryPlaylist;
var tracks = mainLibrary.Tracks;
// var numTracks = tracks.Count;
// limit to 100 for testing
var numTracks = 100;
var albumArray = new Array();
for (var i = 1; i <= numTracks; i++) {
// skip track if undefined:
if(tracks.Item(i) !== undefined) {
// get album title from track
var curTrack = tracks.Item(i);
var albumName = curTrack.Album.toString();
var albumKey = -1;
if(albumArray.length > 0) {
albumKey = checkAlbumExists(albumName, albumArray);
if(albumKey === undefined || albumKey === -1) {
// no album found
albumArray.push({album: albumName, numTracks: 1});
} else {
albumArray[albumKey].numTracks++;
}
} else {
albumArray.push({album: albumName, numTracks: 1});
}
}
}
var checkAlbumExists = function(needle, haystack) {
for(var l =1; l<= haystack.length; l++) {
if(haystack[l].album.toString() === needle) {
return parseInt(l);
}
}
return -1;
}
[...]
任何有关出了什么问题的信息将不胜感激。此处为我的 GitHub 上的文件链接,以帮助理解上下文中的完整脚本