Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于不带.concat的索引合并JavaScript数组_Javascript_Arrays - Fatal编程技术网

基于不带.concat的索引合并JavaScript数组

基于不带.concat的索引合并JavaScript数组,javascript,arrays,Javascript,Arrays,我正在尝试组合两个数组,大多数答案都与将第二个数组添加到第一个数组的末尾有关。我需要将索引合并到一个索引 下面是示例代码: 让arr1=[‘高尔夫’、‘曲棍球’、‘网球’]; 设arr2=['player1','player2','player3']; Array.prototype.zip=函数(arr){ 返回此.map(函数(e,i){ 返回[e,arr[i]; }) }; const arr3=arr1.zip(arr2); 控制台日志(arr3).map将一个数组一对一映射到另一个数

我正在尝试组合两个数组,大多数答案都与将第二个数组添加到第一个数组的末尾有关。我需要将索引合并到一个索引

下面是示例代码:

让arr1=[‘高尔夫’、‘曲棍球’、‘网球’];
设arr2=['player1','player2','player3'];
Array.prototype.zip=函数(arr){
返回此.map(函数(e,i){
返回[e,arr[i];
})
};
const arr3=arr1.zip(arr2);

控制台日志(arr3)
.map
将一个数组一对一映射到另一个数组:如果原始数组中有3个元素,
.map
只能生成另一个包含3个元素的数组。如果不能使用
concat
,请使用
.reduce
而不是
.map
,这样可以在一次迭代中推送多个元素:

const arr1=[‘高尔夫’、‘曲棍球’、‘网球’];
常量arr2=['player1','player2','player3']
Array.prototype.zip=函数(otherArr){
返回此。减少((累计,项目,i)=>{
累计推力(项);
累计推力(其他推力[i]);
返回累计;
}, []);
};
常量arr3=arr1.zip(arr2)
console.log(arr3)
您可以使用
.reduce()
压缩两个数组:

让arr1=[“高尔夫”、“曲棍球”、“网球”],
arr2=['player1','player2','player3'];
设zip=(a1,a2)=>a1.reduce((a,c,i)=>(a.push(c,a2[i]),a),[]);

log(zip(arr1,arr2))您可以使用临时数组而不是直接输入法

let arr1 = ['golf', 'hockey', 'tennis'];
let arr2 = ['player1', 'player2', 'player3']

Array.prototype.zip = function (arr) {
    this.map(function (e, i) { this.splice(i*2+1, 0, arr[i]); }, this )
};
const arr3 = arr1.zip(arr2)
console.log(arr3)
一个简单的解决方案: 只需使用一个简单的reduce()将您现在拥有的内容展平:


这种方法保留了您所拥有的,并且不会增加很多复杂性,比如额外的方法调用、临时数组等;这就是功能性方法的美妙之处:你离你需要的东西只有一个链环。我也会将其转换为一种独立的方法,而不是修改原型,但这不是重点…

请不要对内置对象进行变异。好的,只是补充一下-我需要的最终结果是['golf'、'player1'、'曲棍球'、'player2'、'tennis'、'player3']哦,它看起来更干净。谢谢。我意识到我给出了错误的示例对象,这严重影响了结果。所以我认为这个答案是正确的,因为这是根据我给出的错误信息给出的第一个答案。我在这里写了一个关于stackoverflow链接的新问题-
let arr1 = ['golf', 'hockey', 'tennis'];
let arr2 = ['player1', 'player2', 'player3']

Array.prototype.zip = function (arr) {
      return this.map(function (e, i) {
          return [ e, arr[i]]
      }).reduce((a,b)=>a.concat(b)); // blink and you miss the change...
    };
const arr3 = arr1.zip(arr2)
console.log(arr3)