JavaScript's reverse()总是改变原始变量吗?
Does JavaScript's reverse( ) always change the original variable?
让我解释一下:
function PalindromeTwo(str) {
str = str.split('');
var arr = [];
str.forEach(function(it){
if( (/[a-z]/i).test(it) ){
arr.push(it);
}
})
var reverseArr = arr.reverse();
return reverseArr.join('').toUpperCase() === arr.join('').toUpperCase();
}
PalindromeTwo("hello, there");
在这个例子中,当它应该返回false
时,它返回true
,因为var reverseArr = arr.reverse()
行不仅逆转了reverseArr
,而且逆转了arr
,即原始变量。为什么呢?
是的,reverse
将数组反转到位。您可以在反转之前使用slice
创建一个副本。
var copy = arr.slice();
copy.reverse();
为什么?
因为规范这么说:
数组中的元素被重新排列,以便颠倒它们的顺序。对象作为调用的结果返回。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 使用jQuery从原始页面内容创建iframe
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- jQuery:当屏幕大小改变时,如何更改默认图像和悬停图像
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 为什么使用immutableJS我的状态没有改变
- JavaScript改变了双方的显示风格
- 查找仅适用于原始图像的图像放大算法的名称
- 如何在使用Javascript浏览网站时处理原始窗口
- 改变所有<td>为特定的桌子点击颜色
- markrwithlabel.js(第三方)原始文件链接断开
- 变量dos'即使我可以返回更新后的值,也不会改变
- JavaScript's reverse()总是改变原始变量吗?
- 如果array .prototype.slice()方法返回浅拷贝,为什么改变切片数组的值不会改变原始数组
- 当改变剑道网格单元格值并恢复到保存前的原始值时显示脏标志
- Html上点击改变属性;重新单击回到原始状态
- .sort函数会改变原始数组吗?
- 在一个重复的字符串数组中,为什么替换重复数组中的文本会改变原始数组
- 通过指向原始对象的指针改变Javascript对象属性