切片和映射javascript数组上的多个项目



我有一个多维数组,如:

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

简单地将您想要的数组部分slice出来,然后将它们concat !

…origin.slice(0, start1).concat(origin.slice(end1))…

(假设end1150;如果是50,则使用.slice(-end1))

这应该能帮到你。

多维数组:
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;
}

对数组调用的segmentArray函数:

 Array.prototype.segmentArray = function(start1, end1, factor){
   var array_length = this.length;
   var a = 0;
   var end1 = array_length - end1;
   var array = array_map(this, function(v,i){
       a++;
      return a <= start1 || a > end1 ? v : false;
   });
     return array;
}

用法:

new_arr = profile.segmentArray(start1=2, end1=1, factor=null);
console.log(new_arr);

结果,即在传递的函数参数中设置的数组的前2项和后1项:

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

相关内容

  • 没有找到相关文章

最新更新