如何在JavaScript中将对象(如字符串或数字)附加到数组中?
当前回答
如果要组合两个数组而不重复,可以尝试以下代码:
array_merge = function (arr1, arr2) {
return arr1.concat(arr2.filter(function(item){
return arr1.indexOf(item) < 0;
}))
}
用法:
array1 = ['1', '2', '3']
array2 = ['2', '3', '4', '5']
combined_array = array_merge(array1, array2)
输出:
[1,2,3,4,5]
其他回答
如果要添加值,可以使用push(),例如arr.push(“测试1”、“测试2”);。
如果您有数组,可以使用concat(),例如Array1.contat(Array2)。
如果只有一个元素要添加,也可以尝试长度方法,例如array[aray.length]=“test”;。
我认为值得一提的是,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);
一些快速基准测试(每个测试=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中没有Array的append函数,但我们有push和unshift。假设您有以下阵列:
var arr = [1, 2, 3, 4, 5];
我们喜欢向这个数组附加一个值。我们可以执行arr.push(6),它将在数组末尾添加6:
arr.push(6); // Returns [1, 2, 3, 4, 5, 6];
我们还可以使用unshift,看看我们如何应用它:
arr.unshift(0); // Returns [0, 1, 2, 3, 4, 5];
它们是向数组添加或追加新值的主要函数。
只想添加一个片段,用于非破坏性地添加元素。
var newArr = oldArr.concat([newEl]);
推荐文章
- 如何让元素被点击(对于整个文档)?
- 我如何检查如果一个变量是JavaScript字符串?
- 如何检测如果多个键被按下一次使用JavaScript?
- 如何通过history. pushstate获得历史变化的通知?
- 比较JUnit断言中的数组,简洁的内置方式?
- 数组到哈希Ruby
- 使用jQuery改变输入字段的类型
- 在JavaScript中,什么相当于Java的Thread.sleep() ?
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- Java 8流和数组操作
- 在javascript中从平面数组构建树数组