首页 > 编程语言 >[Javascript] [] is ArrayList

[Javascript] [] is ArrayList

时间:2023-07-20 14:46:09浏览次数:43  
标签:function count console log ArrayList Javascript number push

Run the following code, found that for get & push & pop, it is O(1) time;

But for shift/unshfit, it is O(n) time.

In this cases, Javascript's [], is a ArrayList, everytime you do shift or unshift it need to move the rest of items by one off which is slow operation for large amount of data.


const a: number[] = [];

function time(fn: () => void): number {
    const now = Date.now();
    fn();
    return Date.now() - now;
}

function unshift(number: number) {
    for (let i = 0; i < number; ++i) {
        a.unshift(Math.random());
    }
}

function shift(number: number) {
    for (let i = 0; i < number; ++i) {
        a.shift();
    }
}

function push(number: number) {
    for (let i = 0; i < number; ++i) {
        a.push(Math.random());
    }
}

function pop(number: number) {
    for (let i = 0; i < number; ++i) {
        a.pop();
    }
}

function get(idx: number) {
    return function() {
        return a[idx];
    };
}

function push_arr(count: number) {
    return function() {
        push(count);
    };
}

function pop_arr(count: number) {
    return function() {
        pop(count);
    };
}

function unshift_arr(count: number) {
    return function() {
        unshift(count);
    };
}

function shift_arr(count: number) {
    return function() {
        shift(count);
    };
}

const tests = [10, 100, 1000, 10000, 100000, 1_000_000, 10_000_000];
console.log("Testing get");
tests.forEach(t => {
    a.length = 0;
    push(t);
    console.log(t, time(get(t - 1)));
});

console.log("push");
tests.forEach(t => {
    a.length = 0;
    push(t);

    console.log(t, time(push_arr(1000)));
});

console.log("pop");
tests.forEach(t => {
    a.length = 0;
    push(t);

    console.log(t, time(pop_arr(1000)));
});

console.log("unshift");
tests.forEach(t => {
    a.length = 0;
    push(t);

    console.log(t, time(unshift_arr(1000)));
});

console.log("shift");
tests.forEach(t => {
    a.length = 0;
    push(t);

    console.log(t, time(shift_arr(1000)));
});

 

标签:function,count,console,log,ArrayList,Javascript,number,push
From: https://www.cnblogs.com/Answer1215/p/17568363.html

相关文章

  • kettle javascript获取变量
    kettlejavascript获取变量在Kettle(也称为PentahoDataIntegration)中,JavaScript是一种非常强大的编程语言,可以用于在ETL过程中执行各种复杂的数据处理和转换任务。JavaScript可以帮助我们访问和操作变量,以及在转换过程中进行条件判断和控制流程。本文将介绍如何在Kettle的JavaScr......
  • JavaScript学习 -- Promise的使用
    在JavaScript中,Promise是一种用于处理异步操作的对象。它表示某个异步操作的最终完成或失败,并提供了一种优雅的方式来处理异步操作的结果。本文将介绍JavaScript如何使用Promise,并提供一个实际的例子。什么是PromisePromise是一种异步操作的解决方案,它有三种状态:pending(等待)、re......
  • Javascript和jQuery有什么不同?
     Javascript和jQuery都是前端开发必备的语言和框架,但他们之间有很多不同。下面我们来详细的分析一下。Javascript是一种脚本语言,可以在浏览器端直接运行。它的语法简单,可以操作HTML和CSS,实现动态效果,如表单验证、动态创建元素等。Javascript的核心是ECMAScript标准,它定义了语......
  • JavaScript和Java如何进行通信
     JavaScript和Java是两种不同的编程语言,但是它们可以通过一些技术手段进行通信。在Web开发领域,JavaScript和Java的交互性十分重要,因为它们可以实现复杂的交互操作和数据处理,为Web应用程序带来更好的用户体验。一、Java与JavaScript的通信方式1.JavaappletJavaapplet是一......
  • JavaScript汉字转码原理解析
     JavaScript是一种高级编程语言,广泛应用于Web、移动应用开发等领域。其中,涉及到的汉字编码问题一直备受关注。本篇文章将从JavaScript汉字转码的原理解析入手,为读者深入剖析这一现象。什么是汉字编码?汉字编码是指计算机用二进制形式来表示中文字符的方式。由于计算机只能识别......
  • JavaScript函数中嵌套函数的使用方法及技巧
     在JavaScript编程中,函数是用来封装可重用代码的一种重要工具。但是,有时候在函数内部需要创建另一个函数来完成一些特定的功能。这种在函数内部定义的函数被称为嵌套函数。本文将讨论JavaScript函数中嵌套函数的使用方法及技巧。1.嵌套函数的定义在JavaScript中,嵌套函数可以......
  • JavaScript函数重载实现方法
     在编写JavaScript代码时,我们常常遇到需要编写多个名称相同但参数类型不同的函数的情况。这时,我们可以使用JavaScript函数重载来实现这一功能。函数重载是指在同一个作用域内定义多个同名函数,但参数类型和数量各不相同。在调用函数时,根据传入的参数类型和数量,自动匹配对应的函......
  • 如何使用AJAX实现JavaScript文件下载
    如何使用AJAX实现JavaScript文件下载AJAX(AsynchronousJavaScriptandXML)技术是一种通过JavaScript异步地向服务器发送请求,更新网页内容的技术。在Web开发中,AJAX是非常常用的技术之一,它可以使网页交互更加流畅,也可以实现一些复杂的交互操作。本文将介绍如何使用AJAX实现JavaScri......
  • JavaScript学习笔记01(包含ES6语法)
    Js简介什么是Js?Js最初被创建的目的是“使网页更生动”。Js写出来的程序被称为脚本,Js是一门脚本语言。被直接写在网页的HTML中,在页面加载的时候自动执行脚本被以纯文本的形式提供和执行,不需要特殊的准备或编译即可运行(JINcompiler)Js不仅可以在浏览器中执行,也可以......
  • @JavascriptInterface传过来键值对,Android这边用什么类型接收
    传输键值对给Android的JavascriptInterface概述在Android开发中,我们经常需要在JavaScript和Java之间传输数据。一种常见的方式是通过使用@JavascriptInterface注解将Java方法暴露给JavaScript调用。这种方式可以实现双向通信,并且非常灵活。本文将介绍如何使用@JavascriptInterfac......