.sort 不是数组上的函数
.sort is not a function on an array
重现步骤:
1: 访问 https://www.chess.com/play/computer
2:在控制台粘贴JS代码
预期结果:
棋子按平方数递增打印
实际结果:
Uncaught TypeError: newPieces.sort is not a function
抛出错误
JS代码:
pieces = ["r","n","b","q","k","p"];
colors = ["w","b"];
squareTemplate = "square-";
boardTemplate = "chess-board.layout-board";
function updatePieces(){
return document.querySelectorAll("chess-board.layout-board .piece");
}
function getFen(isFlipped){
}
function evalMove(){
}
console.log("Starting up ...");
const board = document.querySelector(boardTemplate);
let newPieces = [];
newPieces = updatePieces();
newPieces.sort(function(a,b){return a.classList[2].split('-')[1] - b.classList[2].split('-')[1]});
let fenRows = [];
for(i=0;i<newPieces.length;i++){
let classList = newPieces[i].classList;
let pieceColor = classList[1][0];
let pieceType = classList[1][1];
let pieceSquare = classList[2].split('-')[1];
//console.log(" Piece color is: " + pieceColor + " it is: " + pieceType + " and it is in: " + pieceSquare);
if(pieceColor == 'w'){
pieceType.toUpperCase();
} else {
pieceType.toLowerCase();
}
fen
}
所以,基本上 JS 是在试图告诉我那不是数组,好吧,如果不是数组,那我就出生在孟加拉国,因为它是 let newPieces = [];
sort()
是位于 Array.prototype
上的一种方法,它是您想要使用的 querySelectorAll()
returns 表示文档元素列表的静态 NodeList匹配指定的选择器组而不是数组。这就是你得到例外的原因。如果要使用排序,则需要将其转换为数组。
您可以使用 array.from
将其转换为数组
const pieces = document.querySelectorAll("chess-board.layout-board .piece");
const arr = Array.from(pieces);
updatePieces
函数不返回 array
,而 sort
方法仅适用于数组,请先检查 updatePieces()
函数输出
重现步骤: 1: 访问 https://www.chess.com/play/computer 2:在控制台粘贴JS代码
预期结果: 棋子按平方数递增打印
实际结果:
Uncaught TypeError: newPieces.sort is not a function
抛出错误
JS代码:
pieces = ["r","n","b","q","k","p"];
colors = ["w","b"];
squareTemplate = "square-";
boardTemplate = "chess-board.layout-board";
function updatePieces(){
return document.querySelectorAll("chess-board.layout-board .piece");
}
function getFen(isFlipped){
}
function evalMove(){
}
console.log("Starting up ...");
const board = document.querySelector(boardTemplate);
let newPieces = [];
newPieces = updatePieces();
newPieces.sort(function(a,b){return a.classList[2].split('-')[1] - b.classList[2].split('-')[1]});
let fenRows = [];
for(i=0;i<newPieces.length;i++){
let classList = newPieces[i].classList;
let pieceColor = classList[1][0];
let pieceType = classList[1][1];
let pieceSquare = classList[2].split('-')[1];
//console.log(" Piece color is: " + pieceColor + " it is: " + pieceType + " and it is in: " + pieceSquare);
if(pieceColor == 'w'){
pieceType.toUpperCase();
} else {
pieceType.toLowerCase();
}
fen
}
所以,基本上 JS 是在试图告诉我那不是数组,好吧,如果不是数组,那我就出生在孟加拉国,因为它是 let newPieces = [];
sort()
是位于 Array.prototype
上的一种方法,它是您想要使用的 querySelectorAll()
returns 表示文档元素列表的静态 NodeList匹配指定的选择器组而不是数组。这就是你得到例外的原因。如果要使用排序,则需要将其转换为数组。
您可以使用 array.from
const pieces = document.querySelectorAll("chess-board.layout-board .piece");
const arr = Array.from(pieces);
updatePieces
函数不返回 array
,而 sort
方法仅适用于数组,请先检查 updatePieces()
函数输出