Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 方法未添加到原型中_Javascript_Arrays_Prototype - Fatal编程技术网

Javascript 方法未添加到原型中

Javascript 方法未添加到原型中,javascript,arrays,prototype,Javascript,Arrays,Prototype,我有一个js文件,我正在使用它学习javascript。但是,当我运行concatAll时,它会说: Uncaught TypeError: movieLists.map(...).concatAll is not a function Js文件: console.log(tryFun()); Array.prototype.concatAll = function() { var results = []; this.forEach(function(subArray) {

我有一个js文件,我正在使用它学习javascript。但是,当我运行concatAll时,它会说:

Uncaught TypeError: movieLists.map(...).concatAll is not a function
Js文件:

console.log(tryFun());

Array.prototype.concatAll = function() {
    var results = [];
    this.forEach(function(subArray) {
        results.push(subArray);
    });

    return results;
};



function tryFun() {
    var movieLists = [
        {
            name: "New Releases",
            videos: [
                {
                    "id": 70111470,
                    "title": "Die Hard",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                    "bookmark": []
                },
                {
                    "id": 654356453,
                    "title": "Bad Boys",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                    "bookmark": [{ id: 432534, time: 65876586 }]
                }
            ]
        },
        {
            name: "Dramas",
            videos: [
                {
                    "id": 65432445,
                    "title": "The Chamber",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 4.0,
                    "bookmark": []
                },
                {
                    "id": 675465,
                    "title": "Fracture",
                    "boxart": "http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
                    "uri": "http://api.netflix.com/catalog/titles/movies/70111470",
                    "rating": 5.0,
                    "bookmark": [{ id: 432534, time: 65876586 }]
                }
            ]
        }
    ];

return movieLists.map(movieList=>
        movieList.videos.map(video=>video.id))
.concatAll();
}

看起来我在这里遗漏了一些技巧。感谢您的关注。Javascript是否应该在文件开头定义的原型上添加函数?

哦,我明白了!它的程序流concatAll从未添加。移动调用有助于:

Array.prototype.concatAll = function() {
    var results = [];
    this.forEach(function(subArray) {
        results.push(subArray);
    });

    return results;
};

console.log(tryFun());

哦,明白了!它的程序流concatAll从未添加。移动调用有助于:

Array.prototype.concatAll = function() {
    var results = [];
    this.forEach(function(subArray) {
        results.push(subArray);
    });

    return results;
};

console.log(tryFun());

在添加
concatAll
之前,您正在调用
tryFun
。在调用
tryFun
之前,将该方法添加到原型中:

Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
结果:推送(子阵);
});
返回结果;
};
log(tryFun());
函数tryFun(){
var movieLists=[
{
名称:“新版本”,
视频:[
{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
},
{
名称:“戏剧”,
视频:[
{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:675465,
“标题”:“骨折”,
“boxart”:http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
}
];
返回movieList.map(movieList=>
movieList.videos.map(video=>video.id))
.concatal();

}
在添加
concatAll
之前,您正在呼叫
tryFun
。在调用
tryFun
之前,将该方法添加到原型中:

Array.prototype.concatAll=function(){
var结果=[];
this.forEach(函数(子数组){
结果:推送(子阵);
});
返回结果;
};
log(tryFun());
函数tryFun(){
var movieLists=[
{
名称:“新版本”,
视频:[
{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
},
{
名称:“戏剧”,
视频:[
{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2891/TheChamber.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:675465,
“标题”:“骨折”,
“boxart”:http://cdn-0.nflximg.com/images/2891/Fracture.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{id:432534,时间:65876586}]
}
]
}
];
返回movieList.map(movieList=>
movieList.videos.map(video=>video.id))
.concatal();

}
通常与您试图实现的内容相关,您可以很容易地在不使用
.concatal()
函数的情况下完成,因为
.concat()
是可变的,将自动展平数组

因此,使用“扩展语法”,您可以执行以下操作:

return [].concat(...movieLists.map(
    movieList => movieList.videos.map(video => video.id))
);

这里有一个现场演示:

console.log(tryFun());
函数tryFun(){
var movieLists=[{
名称:“新版本”,
视频:[{
“id”:70111470,
“头衔”:“死硬”,
“boxart”:http://cdn-0.nflximg.com/images/2891/DieHard.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:4.0,
“书签”:[]
},
{
“id”:654356453,
“头衔”:“坏男孩”,
“boxart”:http://cdn-0.nflximg.com/images/2891/BadBoys.jpg",
“uri”:http://api.netflix.com/catalog/titles/movies/70111470",
“评级”:5.0,
“书签”:[{
身份证号码:432534,
时间:65876586
}]
}
]
},
{
名称:“戏剧”,
视频:[{
“id”:65432445,
“头衔”:“商会”,
“boxart”:http://cdn-0.nflximg.com/images/2