gpt4 book ai didi

javascript - array.slice() 如果我从 0 以外的任何地方开始,它就无法运行

转载 作者:行者123 更新时间:2023-11-30 07:33:19 25 4
gpt4 key购买 nike

我在名为 $scope.results 的数组中有一个包含 8 个对象的列表,我还有一个 selectAll() 函数,我目前正在尝试使用该函数我的自定义简单分页。

请不要评论说我应该为 angularjs 使用 bootstrap 分页,我自己制作了它并且它做了我需要它做的事情。

$scope.results = [
{
"devID": "1",
"devName": "item 1",
"desc": "sample desc"
},
{
"devID": "2",
"devName": "item 2",
"desc": "sample desc"
},
{
"devID": "3",
"devName": "item 3",
"desc": "sample desc"
},
{
"devID": "4",
"devName": "item 4",
"desc": "sample desc"
},
{
"devID": "5",
"devName": "item 5",
"desc": "sample desc"
},
{
"devID": "6",
"devName": "item 6",
"desc": "sample desc"
},
{
"devID": "7",
"devName": "item 7",
"desc": "sample desc"
},
{
"devID": "8",
"devName": "item 8",
"desc": "sample desc"
}
];

我有一个名为 $scope.deleteList = {} 的空对象,其中 selectAll() 填充了 ID。

这是我的 $scope.selectAll()(为我添加了控制台日志以查看发生了什么):

    $scope.selectAll = function(){


$scope.resultsToDelete = $scope.results.slice(($scope.currentPage * $scope.pageSize), $scope.pageSize);
console.log("$scope.results:", $scope.results);
console.log("$scope.currentPage:", $scope.currentPage);
console.log("$scope.pageSize:", $scope.pageSize);
console.log("$scope.currentPage * $scope.pageSize:", ($scope.currentPage * $scope.pageSize));


for (var i = 0; i < $scope.resultsToDelete.length; i++) {
var item = $scope.resultsToDelete[i];
$scope.devDelList[item.devID] = true;
}



};

($scope.currentPage * $scope.pageSize) 给我列表下一页上第一个对象的索引。

这是我的分页:

    $scope.pagination = function(itemList) {
$scope.currentPage = 0;
$scope.pageSize = 4;
$scope.numOfPages = Math.ceil(itemList.length / $scope.pageSize);
$scope.pageNumbersArray = [];

for (var i = 0; i <= $scope.numOfPages -1 ; i++) {
$scope.pageNumbersArray.push(i);
}
}($scope.results)



$scope.prev = function() {
if ($scope.currentPage > 0) {
$scope.currentPage = -- $scope.currentPage;
}
}

$scope.next = function() {
if ($scope.currentPage < $scope.numOfPages - 1 ) {
$scope.currentPage = ++ $scope.currentPage;
}
}

$scope.goToPage = function(pageNum) {
$scope.currentPage = pageNum;
}

我的问题是结果数组上的 .slice()。它仅适用于第一页 - 当 $scope.currentPage = 0 时。一旦 $scope.currentPage = 1,$scope.results.slice() 就会返回一个空数组。

$scope.results.slice(0, 4) 返回第一页 4 项的正确 ID。

$scope.results.slice(4, 4) 返回一个空数组。 (例如 []),它不返回第二组 4 项

我错过了什么?

最佳答案

$scope.results.slice(4, 4) returns an empty array. (e.g. [])

根据 documentation

Zero-based index before which to end extraction. slice extracts up to but not including end.

For example, slice(1,4) extracts the second element through the fourth element (elements indexed 1, 2, and 3).

因此,从 44 应该只有 0

你需要尝试

var startIndex = $scope.currentPage * $scope.pageSize;
var endIndex = ($scope.currentPage * $scope.pageSize) + $scope.pageSize;
$scope.resultsToDelete = $scope.results.slice( startIndex, endIndex );

关于javascript - array.slice() 如果我从 0 以外的任何地方开始,它就无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43304954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com