상장 토큰, 또는 누군가의 자바스크립트 숙제
7572 단어 homeworkjavascript
"(1, 2, 3), (4, 5, 6), (7, 8, 9)"
형식의 문자열이 주어지면 [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
형식의 다차원 배열로 변환합니다.첫 번째 패스를 위해
Array.prototype.reduce()
와 다음과 같은 몇 가지 정규식을 사용하여 몇 가지 재미있는 헛소리를 했습니다...const listified = `(1, 2, 3), (4, 5, 6), (7, 8, 9), (5, junk, 100, 2eggs)`
.match(/\((.*?)\)/g)
.reduce(
(a, c) => [
...a,
[
...c
.match(/([0-9]+)(?=[ ,\)])/g)
.map((el) => !isNaN(el) && parseInt(el)),
],
],
[]
);
console.log(listified);
Demo on Replit.
멋져 보이고 멋져 보이는 것이 최신 JavaScript에서 내가 가장 좋아하는 것이지만, 이 접근 방식은 루프 내에서 루프를 호출하는 데 문제가 있으므로 문자열을 가로질러 포인터를 이동하고 찾은 숫자를 수집하는 보다 효율적인 접근 방식이 있습니다. 작업 세트로...
// Convert strings of the form `"(1, 2, 3), (4, 5, 6), (7, 8, 9)"` into
// multidimensional arrays of the form `[[1, 2, 3], [4, 5, 6], [7,8,9]]`.
const listifiedTokens = (str) => {
let data = [];
let ws = [];
let x;
for (c of str) {
// Taking pains to prevent type-coercsion.
if (!isNaN(c)) {
x = x ? `${x}${c}` : c;
}
// Start a new work set and overwrite
// any existing work set.
if (c === "(") {
ws = [];
}
// ')' and ',' terminate a list entry,
// and x must be a number before we parse.
if ([")", ","].includes(c) && !isNaN(x)) {
ws = [...ws, parseInt(x, 10)];
}
// Report the work set.
if (c === ")") {
data = [...data, ws];
}
// Whenever c is NaN, we flush x
// because this only happens at the end
// of a valid list or when the list item
// contains an unsupported value.
if (isNaN(c)) {
x = undefined;
}
}
return data;
};
const str = `(1, 2, 3), (4, 5, 6), (7, 8, 8, 9), (100, 2egg, 5, bananas)`;
console.log(listifiedTokens(str));
Demo on Replit.
거의 멋지지 않지만 장기적으로는 더 나을 것입니다.
Reference
이 문제에 관하여(상장 토큰, 또는 누군가의 자바스크립트 숙제), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/365erik/listified-tokens-or-somebodys-javascript-homework-4heo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)