一个Javascript数组联接操作中有多少个操作
How many operations are there in a Javascript Array Join operation?
Javascript Array Join
方法中有多少个操作?
它只是一个操作,还是操作的数量与数组中的项数相同?
我之所以这么问,是因为我想知道比较下面两个阵列最便宜的方法是什么:
var a = ["Apples", "Pears", "Bananas"]
var b = ["Apples", "Oranges", "Bananas"]
方法A
For (var i = 0; i < 2; i++) {
if (a[i] === b[i]) console.log(false);
}
方法B
aa = a.join("&");
bb = b.join("&");
if (aa === bb) console.log(false)
不写a === b
的最便宜的方法,因为重点是比较两个不同数组中的值
ECMAScript 2015(第6版,ECMA-262)的Array.prototype.join (separator)
执行以下步骤:
Let O be ToObject(this value).
ReturnIfAbrupt(O).
Let len be ToLength(Get(O, "length")).
ReturnIfAbrupt(len).
If separator is undefined, let separator be the single-element String ",".
Let sep be ToString(separator).
ReturnIfAbrupt(sep).
If len is zero, return the empty String.
Let element0 be Get(O, "0").
If element0 is undefined or null, let R be the empty String; otherwise, let R be ToString(element0).
ReturnIfAbrupt(R).
Let k be 1.
Repeat, while k < len
Let S be the String value produced by concatenating R and sep.
Let element be Get(O, ToString(k)).
If element is undefined or null, let next be the empty String; otherwise, let next be ToString(element).
ReturnIfAbrupt(next).
Let R be a String value produced by concatenating S and next.
Increase k by 1.
Return R.
注:
- 数组的元素被转换为字符串,然后这些字符串被连接起来,用分隔符分隔。如果没有提供分隔符,则使用单个逗号作为分隔符
- 联接函数是有意通用的;它不要求其this值是Array对象。因此,它可以被转移到其他类型的对象中用作方法
我想说你的第一种方法更便宜:)但你可以运行自己的基准测试。
几乎根据定义,没有什么比下面更快的了,假设你想做一个肤浅的比较。
function equal(a, b) {
if (a === b) return true;
if (a.length !== b.length) return false;
for (var i = 0; i < a.length; i++) if (a[i] !== b[i]) return false;
return true;
}
快速测试表明,这比使用join
或stringify
快50倍。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- 如何确定javascript已经完成了某些操作.ios上的
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 从JavaScript访问struts操作中的属性
- fluxxor向一个flux实例添加一组以上的操作
- Jquery表单验证插件-如果选中复选框,如何在提交时执行某些操作
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 操作放置在画布上的元素之间的连接
- 使用“+="操作人员
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Jquery未定义函数正在停止其他操作
- 如何操作iframe之外的元素
- javascript对象操作:根据指定条件选择属性
- jQuery:暂停按钮可以暂停所有其他操作
- 用于选择/文本框操作的JavaScript
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 通过javascript操作图像,非常简单
- 一个Javascript数组联接操作中有多少个操作
- 这个简单的for循环有多少个操作