如何计算AngularJS应用程序列表中特定项目的数量

Ric*_*rth 1 javascript angularjs

我使用以下代码尝试生成一个列表,显示lettersAngularJS控制器中列表中每个项目的计数:

$scope.letters = ['a','b','c'];
$scope.letterdata = ['a','b','a','c','b','a'];

$scope.counts = $scope.letters.map(function (x) {
    $scope.letterdata.filter(function (y) {
        return (x == y);
    }).length;
});
Run Code Online (Sandbox Code Playgroud)

我想得到[3,2,1]输出,但这显示为[null,null,null].

Tus*_*har 5

return内心缺少陈述map().

$scope.counts = $scope.letters.map(function (x) {
    return $scope.letterdata.filter(function (y) {
    ^^^^^^
        return (x == y);
    }).length;
});
Run Code Online (Sandbox Code Playgroud)

var letters = ['a', 'b', 'c'];
var letterdata = ['a', 'b', 'a', 'c', 'b', 'a'];

var counts = letters.map(function (x) {
    return letterdata.filter(function (y) {
        return(x == y);
    }).length;
});
console.log(counts);
Run Code Online (Sandbox Code Playgroud)

但这显示为[null,null,null].

你应该得到[ undefined, undefined, undefined ]什么,因为没有返回,默认情况下undefined返回.


使用ES2015 箭头功能编写的等效代码.

$scope.letters.map(x => $scope.letterdata.filter(y => x == y).length)
Run Code Online (Sandbox Code Playgroud)

var letters = ['a', 'b', 'c'];
var letterdata = ['a', 'b', 'a', 'c', 'b', 'a'];

var counts = letters.map(x => letterdata.filter(y => x == y).length);
console.log(counts);
Run Code Online (Sandbox Code Playgroud)