javascript - 使用javascript,更改锯齿状数组中元素长度的有效方法是什么?

标签 javascript arrays

我正在尝试找到一种有效的方法来更改数组的长度和数组中的元素。例如,如果我有

var arr = [["Name", "Age", "Lightsaber Color"], ["Luke Skywalker", "22", "Green"], ["Yoda", "900", "Green"], ["Obi Wan Kenobi", "59", "Blue"]]

我想结束

var arr = [["Name", "Age"], ["Luke Skywalker", "22"], ["Yoda", "900"]]

我已经编写了一些代码来执行此操作,但我想确保更改嵌套数组长度的方式(由于缺乏更好的术语)尽可能高效。

我有:

var arr = [["Name", "Age", "Lightsaber Color"], ["Luke Skywalker", "22", "Green"], ["Yoda", "900", "Green"], ["Obi Wan Kenobi", "59", "Blue"]]
arr.length = 3; // Removes the Obi Wan entry
console.log(arr);
for(var i = 0; i < arr.length; i++){
        arr[i].length = 2 // Removes lightsaber color
};
console.log(arr)

我希望优化的代码是 for 循环。我将使用更大的数据集。 谢谢

最佳答案

The code I'm wanting to hopefully optimize is the for loop.

如果您指的是运行时效率,那么您正在做的事情已经达到了预期的效率。任何使用其他东西的东西(比如 slicemap)都会变慢。

<小时/>

请注意,这实际上不太重要。除非您已经确定此循环是性能障碍,否则不必担心。如果您已经发现这是一个性能障碍,则数组必须非常大。 :-) 即使您要处理 100,000 个数组,我也不认为这会花费太多时间。

让我们看看:

const now = performance.now ? performance.now.bind(performance) : Date.now.bind(Date);

// Create an array with 110k entries, each being five entries long.
const arr = Array.from({length:110000}, () => ["a", "b", "c", "d", "e"]);

// Start timing
const start = performance.now();

// Cut it down to 100k entries
arr.length = 100000;

// Trim them to two entries
for (const entry of arr) {
    entry.length = 2;
}

// Done timing
const elapsed = now() - start;
console.log("Elapsed: " + elapsed + "ms");

我在使用 Brave 的工作站上得到了大约 20 毫秒的时间(与 Chrome 一样,使用 V8 作为 JavaScript 引擎)。

不是一个严格的基准,但它给了我们一个想法......

关于javascript - 使用javascript,更改锯齿状数组中元素长度的有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59950594/

相关文章:

javascript - 用于缓存 JSON 的共享首选项与 SQLite

javascript - isFlag 而不是 isFlag() 语法 : is it possible in Javascript

perl - 如何验证 Perl 中的数组(列表)中是否存在值?

javascript - 如何在嵌套 JSON 的第 0 个索引特定键 "conditions"和值下拼接每个 “logic” ?

c - 从函数中的 argv 分配指针

java - 将分割字符串分配给已解析的 int

javascript - Kendo Stockchart 禁用缩放至小时级别

javascript - 如何使用 Angular Fullstack 部署 Throng 或 Cluster?

c# - 从包含 m 个项目的集合 S 中选择到长度为 N (N>m) 的另一个列表中的排列

javascript - react-native-router-flux 具有替换、重置和刷新功能的刷新组件