如何在JavaScript中将对象(如字符串或数字)附加到数组中?
当前回答
附加单个元素
// Append to the end
arrName.push('newName1');
// Prepend to the start
arrName.unshift('newName1');
// Insert at index 1
arrName.splice(1, 0,'newName1');
// 1: index number, 0: number of element to remove, newName1: new element
// Replace index 3 (of exists), add new element otherwise.
arrName[3] = 'newName1';
附加多个元素
// Insert from index number 1
arrName.splice(1, 0,'newElemenet1', 'newElemenet2', 'newElemenet3');
// 1: index number from where insert starts,
// 0: number of element to remove,
//newElemenet1,2,3: new elements
附加一个数组
// Join two or more arrays
arrName.concat(newAry1, newAry2);
//newAry1,newAry2: Two different arrays which are to be combined (concatenated) to an existing array
其他回答
我认为值得一提的是,push可以用多个参数调用,这些参数将按顺序附加到数组中。例如:
var arr=['first'];arr.push('第二个','第三个');控制台日志(arr);
因此,您可以使用push.apply将一个数组附加到另一个数组,如下所示:
var arr=['first'];arr.push('第二个','第三个');arr.push.apply(arr,['forth','fifth']);控制台日志(arr);
带注释的ES5提供了更多关于推送和应用功能的信息。
2016年更新:使用spread,您不再需要应用,例如:
var arr=['first'];arr.push('第二个','第三个');arr.push(…['furth','fifth']);控制台日志(arr);
如果arr是数组,而val是要添加的值,请使用:
arr.push(val);
E.g.
var arr=[‘a’,‘b’,‘c’];arr.push('d');控制台日志(arr);
一些快速基准测试(每个测试=500k附加元素,结果是多次运行的平均值)显示如下:
Firefox 3.6(Mac):
小型阵列:arr[arr.length]=b更快(300ms vs.800ms)大型阵列:arr.push(b)更快(500ms vs.900ms)
Safari 5.0(Mac):
小型阵列:arr[arr.length]=b更快(90ms比115ms)大型阵列:arr[arr.length]=b更快(160ms比185ms)
谷歌Chrome 6.0(Mac):
小阵列:没有显著差异(而且Chrome速度很快!只有~38ms!!)大型阵列:无显著差异(160ms)
我更喜欢arr.push()语法,但我认为我最好使用arr[arr.length]版本,至少在原始速度上。我很想看看IE运行的结果。
我的基准测试循环:
function arrpush_small() {
var arr1 = [];
for (a = 0; a < 100; a++)
{
arr1 = [];
for (i = 0; i < 5000; i++)
{
arr1.push('elem' + i);
}
}
}
function arrlen_small() {
var arr2 = [];
for (b = 0; b < 100; b++)
{
arr2 = [];
for (j = 0; j < 5000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
}
function arrpush_large() {
var arr1 = [];
for (i = 0; i < 500000; i++)
{
arr1.push('elem' + i);
}
}
function arrlen_large() {
var arr2 = [];
for (j = 0; j < 500000; j++)
{
arr2[arr2.length] = 'elem' + j;
}
}
您可以使用JavaScript Spread运算符语法:
// Initialize the array
var arr = [
"Hi",
"Hello",
"Bangladesh"
];
// Append a new value to the array
arr = [...arr, "Feni"];
// Or you can add a variable value
var testValue = "Cool";
arr = [...arr, testValue ];
console.log(arr);
// Final output [ 'Hi', 'Hello', 'Bangladesh', 'Feni', 'Cool' ]
有两种方法可以在JavaScript中附加数组:
1) push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度。
var a = [1, 2, 3];
a.push(4, 5);
console.log(a);
输出:
[1, 2, 3, 4, 5]
2) unshift()方法将一个或多个元素添加到数组的开头,并返回数组的新长度:
var a = [1, 2, 3];
a.unshift(4, 5);
console.log(a);
输出:
[4, 5, 1, 2, 3]
3) concat()方法用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
console.log(arr3);
输出:
[ "a", "b", "c", "d", "e", "f" ]
4) 可以使用数组的.length属性将元素添加到数组的末尾:
var ar = ['one', 'two', 'three'];
ar[ar.length] = 'four';
console.log( ar );
输出:
["one", "two", "three", "four"]
5) splice()方法通过删除现有元素和/或添加新元素来更改数组的内容:
var myFish = ["angel", "clown", "mandarin", "surgeon"];
myFish.splice(4, 0, "nemo");
//array.splice(start, deleteCount, item1, item2, ...)
console.log(myFish);
输出:
["angel", "clown", "mandarin", "surgeon","nemo"]
6) 您还可以通过指定新索引并赋值来向数组中添加新元素:
var ar = ['one', 'two', 'three'];
ar[3] = 'four'; // add new element to ar
console.log(ar);
输出:
["one", "two","three","four"]
推荐文章
- 我如何检查如果一个变量是JavaScript字符串?
- 如何检测如果多个键被按下一次使用JavaScript?
- 如何通过history. pushstate获得历史变化的通知?
- 比较JUnit断言中的数组,简洁的内置方式?
- 数组到哈希Ruby
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- Java 8流和数组操作
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中