Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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
在多个项目上切片并映射javascript数组_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

在多个项目上切片并映射javascript数组

在多个项目上切片并映射javascript数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有一个多维数组,如: profile = [[2001-05-01, 20], [2001-05-02, 23], [2001-05-03, 18], ...]; 我创建了一个新数组,并通过一个可变因子操纵数组的第二个元素 我现在正在做这件事,它起作用了: function new_ar(origin, start, end, factor) { var result = [[]]; result = origin.slice(start, end).map(function(ite

我有一个多维数组,如:

profile = [[2001-05-01, 20], [2001-05-02, 23], [2001-05-03, 18], ...];
我创建了一个新数组,并通过一个可变因子操纵数组的第二个元素

我现在正在做这件事,它起作用了:

function new_ar(origin, start, end, factor) {
  var result = [[]];
  result = origin.slice(start, end).map(function(item){ return [item[0], parseInt(item[1])*factor]});
  return result;
};
我得到了所需的数组:

array2 = [[2001-05-01, 400], [2001-05-02, 460], [2001-05-02, 360], ...]
问题 如何获得新的array3,它由array2的前n个和最后m个元素组成? 我需要调用一个函数,比如

function new_ar(origin, start1, end1, factor){
...code...
}

例如:我有一个包含200个元素的数组,我需要得到一个包含前100个元素和后50个元素的新数组。这意味着,我需要说从100删除到149。

这应该能让你达到目的

多维数组:

profile = [['test_start', 20], ['test_start', 23], [2001-05-03, 18],[2001-05-01, 20], [2001-05-02, 23], [2001-05-03, 18], [2001-05-03, 18],[2001-05-01, 20], [2001-05-02, 23], ['test_end', 18]];
一个映射函数,用于迭代数组并仅返回匹配的结果。要在我们的
segmentArray
函数中调用:

array_map = function(array, mapFunction) {
          var newArray = new Array(array.length);
          for(var i = 0; i < array.length; i++) {
              response = mapFunction(array[i]);
              if(response){
                    newArray[i] = response;
              }
          }
          return newArray;
}
用法:

new_arr = profile.segmentArray(start1=2, end1=1, factor=null);
console.log(new_arr);
结果是数组中的前2项和后1项,正如我们在传递的函数params中设置的:

0: Array[2] 
1: Array[2]
2: Array[2]

只需
切片
取出您想要的数组部分,然后再将它们切掉


(假设您的示例中
end1
150
;如果
50
,则使用
.slice(-end1)

您是否考虑过使用
Array.prototype.splice
?您好,我已经在使用slice了,正如您在“函数新建”中看到的那样。据我所知,slice得到了数组的连续部分。例如n到m。但是我需要得到n到m,x到y。
切片
vs.
拼接
我说的是哦,是的。我试过了,但不知道如何设置参数。是否可以将其他值设置为null而不是删除它们?解决方案:
result=origin.slice(0,start2).concat(origin.slice(end2)).concat(origin.slice(start2,end2).map(函数(项){return[item[0],0]}当然有可能,但不能仅通过
切片
+
concat
。我建议只使用
映射
,并有条件地(基于索引)从回调返回
null
——这只是另一个转换。您是故意对它们进行排序的吗?如果没有,您不需要任何切片和concat:
.map(函数(项,索引){If(索引>=start2&&index
我想我在过去的3个小时里停电了。通过
result=origin.map(函数(item,index){if(index=end)返回[item[0],0];else返回item;})对其进行了调整。
0: Array[2] 
1: Array[2]
2: Array[2]
…origin.slice(0, start1).concat(origin.slice(end1))…