函数将项添加到数组的开头,而不使用unshift方法
function to add item to beginning of an array without unshift method
我正在尝试实现一个函数,在不使用unshift或splice方法的情况下将项添加到数组的开头,只使用array.length。到目前为止,我所做的一切都只是覆盖索引0处已经存在的内容。任何帮助都将不胜感激!
LetsUnshift = function(array) {
for (var i = array.length - 1; i >0; i--) {
array[i +1] = array[i];
}
array[0] = item;
};
保持相同的引用,您可以使用ES 6的Array.prototype.copyWithin
var arr = ['b', 'c', 'd'],
x = 'a';
++arr.length;
arr.copyWithin(1, 0);
arr[0] = x;
arr; // ["a", "b", "c", "d"]
你可以倒车两次,
var arr = ['b', 'c', 'd'];
arr.reverse().push('a');
arr.reverse();
arr; // ["a", "b", "c", "d"]
你可以重新推动整个事情,
var arr = ['b', 'c', 'd'],
a2 = arr.slice();
arr.length = 0;
arr.push('a');
Array.prototype.push.apply(arr, a2);
arr; // ["a", "b", "c", "d"]
您可以使用while
进行迭代,类似于您的for
var arr = ['b', 'c', 'd'],
i = arr.length;
while (i-- > 0)
arr[i + 1] = arr[i];
arr[0] = 'a';
arr; // ["a", "b", "c", "d"]
如果您的目标是创建新引用,您可以重写后两个引用中的任何一个,例如
var arr = ['b', 'c', 'd'],
a2 = ['a'];
Array.prototype.push.apply(a2, arr);
a2; // ["a", "b", "c", "d"]
如果我们只是打高尔夫球,
var arr = ['b', 'c', 'd'],
a2 = Array.bind(null, 'a').apply(null, arr);
a2; // ["a", "b", "c", "d"]
这应该有效:
var LetsUnshift = function(array, item) {
for (var i = array.length - 1; i >=0; i--) {
array[i +1] = array[i];
}
array[0] = item;
};
代码的问题在于条件i>0
,它阻止第一个元素向右移动。
letsUnshift = function(array, itemToAdd) {
return array.reduce(function(newArray, value){
newArray.push(value);
return newArray;
}, [itemToAdd]);
};
letsUnshift([2,3,4], 1); //returns [1,2,3,4] and doesn't modify original array
只是调用了函数,并按照另一个答案中的建议从arr.length-1
向下启动到>= 0
var item = 15, i, arr = [11, 23, 33, 54, 17, 89];
LetsUnshift(arr);
function LetsUnshift(arr) {
for (i = arr.length-1; i >= 0; --i) {
arr[i + 1] = arr[i];
}
arr[0] = item;
};
console.log(arr);
//OUTPUT: [15, 11, 23, 33, 54, 17, 89]
const array=[1,2,3]
const target=3
function addElementAtStarting(array, target){
return [target, ...array]
}
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 数组在递归方法中设置为null
- 打破承诺链的好方法是什么
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- 使用“;这个“;JavaScript原型方法中的关键字
- 序列化数据属性中对象的最可靠方法
- 使用Objective-C的JavaScript注入方法
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 有没有一种方法可以防止img get请求使用css或js发生
- Javascript,有没有一种方法可以将数组写成没有逗号或空格的单个文本字符串
- toBoolean方法类似于toString
- 如何在单击复选框后调用控制器方法
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 递归使用 eval() 是检查程序执行的好方法吗?
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 函数将项添加到数组的开头,而不使用unshift方法
- 有谁能告诉我在Shift的引擎盖下发生了什么吗?JavaScript中的Unshift()数组方法
- 为什么Javascript的unshift方法会添加引号