찾다
웹 프론트엔드JS 튜토리얼JavaScript 문자열 곱셈_javascript 기술

원본 주소: http://www.davidflanagan.com/2009/08/string-multipli.html
원저자: David Flanagan
In Ruby 에서 "*" 연산자는 문자열을 왼쪽 매개변수로 사용하고 숫자를 오른쪽 매개변수로 사용하여 문자열 반복을 구현합니다. 예를 들어, "Ruby" * 2의 값은 "RubyRuby"입니다. 이는 몇 가지 위치(예: 하이픈과 같은 ASCII 문자 테이블 생성)에서만 유용하지만 매우 간결합니다. 그리고 문자열을 n번 연결하는 루프를 작성하는 것보다 낫습니다. 이는 매우 비효율적으로 보입니다.

방금 JavaScript에서 문자열 곱셈을 수행하는 영리한 방법을 발견했습니다.

코드 복사 코드

String.prototype.times = function(n) {
return Array.prototype.join.call({length:n 1}, this); ;
"js".times(5) // => "jsjsjsjs"


이 메소드는 요소가 모두 "정의되지 않은" 배열을 호출하는 것입니다. 행동. 그러나 실제로 n 1개의 "정의되지 않은" 요소가 있는 배열을 생성하지는 않습니다. 이는 Array 객체의 프로토타입 함수인 Join()에 의존하여 길이 속성을 포함하는 익명 객체를 사용합니다. "Object"는 배열이 아니기 때문에 Join()을 직접 호출할 수 없으므로 프로토타입의 call()을 통해 구현해야 합니다. 동일한 효과를 갖는 간단한 버전은 다음과 같습니다.


코드 복사 코드는 다음과 같습니다.
String.prototype.times = function(n) { return (new Array(n 1)).join(this);}

Array의 생성자를 호출할 때 매개변수는 배열의 길이를 설정하기만 하고 배열의 요소를 실제로 생성하지는 않습니다.

Firefox에서만 테스트했고 일반 루프보다 더 효율적일 것으로 예상하지만 벤치마킹하지는 않았습니다.

저자 소개
David Flanagan은 Java 글쓰기에 푹 빠진 컴퓨터 프로그래머입니다. 그는 대부분의 시간을 Java 관련 책을 쓰는 데 보냅니다. David는 MIT에서 컴퓨터 과학 및 엔지니어링 학위를 받았습니다. 그는 시애틀과 밴쿠버 사이의 미국 태평양 북서부 해안에 살고 있습니다. 그의 베스트셀러 O'Reilly 저서로는 Java in a Nutshell, Java Foundation Classes in a Nutshell, Java Enterprise in a Nutshell, JavaScript: The Definitive Guide, JavaScript Pocket Reference 및 The Ruby 프로그래밍 언어 등이 있습니다.

내 의견
효율성이 중요하다면 루프 반복을 약간 최적화하는 것이 더 효율적일 수 있습니다. 예를 들어, 다음 재귀 호출의 알고리즘 복잡도는 O(log2n)입니다. Google Chrome에서의 테스트 결과는 David의 방법보다 빠르게 실행된다는 것입니다. 그러나 그의 방법이 매우 우아하다는 점은 인정해야 합니다!

코드 복사 코드는 다음과 같습니다.
String.prototype.times = function(n ) {
if (n == 1 ) {
return this;
}
var midRes = this.times(Math.floor(n/2))
midRes = midRes;
if ( n % 2 ) {
midRes = this;
}
return midRes;
}

Postscript
David가 내 제안을 채택했습니다. 그는 우리를 위해 비재귀 버전을 작성했습니다. 그의 블로그의 원본 텍스트를 참조하십시오: http://www.davidflanagan.com/2009/08/good-algorithms.html
연락처 정보
내 이메일, 저에게 연락을 환영합니다(redraiment@gmail.com). )
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
php怎么将16进制字符串转为数字php怎么将16进制字符串转为数字Oct 26, 2021 pm 06:36 PM

php将16进制字符串转为数字的方法:1、使用hexdec()函数,语法“hexdec(十六进制字符串)”;2、使用base_convert()函数,语法“bindec(十六进制字符串, 16, 10)”。

php怎么将字符串转换成小数php怎么将字符串转换成小数Mar 22, 2023 pm 03:22 PM

PHP 是一门功能强大的编程语言,广泛应用于 Web 开发领域。其中一个非常常见的情况是需要将字符串转换为小数。这在进行数据处理的时候非常有用。在本文中,我们将介绍如何在 PHP 中将字符串转换为小数。

golang怎么检测变量是否为字符串golang怎么检测变量是否为字符串Jan 06, 2023 pm 12:41 PM

检测变量是否为字符串的方法:1、利用​“%T”格式化标识,语法“fmt.Printf("variable count=%v is of type %T \n", count, count)”;2、利用reflect.TypeOf(),语法“reflect.TypeOf(变量)”;3、利用reflect.ValueOf().Kind()检测;4、使用类型断言,可以对类型进行分组。

php 字符串长度不一致怎么办php 字符串长度不一致怎么办Feb 07, 2023 am 09:58 AM

php字符串长度不一致的解决办法:1、通过mb_detect_encoding()函数查看字符串的编码方式;2、通过mb_strlen函数查看具体字符长度;3、使用正则表达式“preg_match_all('/[\x{4e00}-\x{9fff}]+/u', $str1, $matches);”剔除非中文字符即可。

go语言怎么删除字符串中的空格go语言怎么删除字符串中的空格Jan 17, 2023 pm 02:31 PM

删除方法:1、使用TrimSpace()函数去除字符串左右两边的空格,语法“strings.TrimSpace(str)”;2、使用Trim()函数去除字符串左右两边的空格,语法“strings.Trim(str, " ")”;3、使用Replace()函数去除字符串的全部空格,语法“strings.Replace(str, " ", "", -1)”。

php怎么将字符串转为布尔类型php怎么将字符串转为布尔类型Jul 01, 2021 pm 06:36 PM

转换方法:1、在转换变量前加上用括号括起来的目标类型“(bool)”或“(boolean)”;2、用boolval()函数,语法“boolval(字符串)”;3、用settype()函数,语法“settype(变量,"boolean")”。

php字符串函数学习:怎么去掉前面的字符php字符串函数学习:怎么去掉前面的字符Mar 20, 2023 pm 02:33 PM

在开发PHP应用程序时,有时我们需要去掉字符串前面的某些特定字符或者字符串。在这种情况下,我们需要使用一些PHP函数来实现这一目标。本文将介绍一些PHP函数,帮助您轻松地去掉字符串前面的字符或字符串。

php字符串部分乱码怎么办php字符串部分乱码怎么办Jan 20, 2023 am 10:18 AM

php字符串部分乱码的解决办法:1、使用“mb_substr(strip_tags($str),0,-1,'UTF-8');”截取字符串;2、使用“iconv("UTF-8","GB2312//IGNORE",$data)”转换字符集即可。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.