我有一个多维数组,如:
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删除。
答案 0 :(得分:2)
只需slice
输出您想要的数组部分,然后concat
!
…origin.slice(0, start1).concat(origin.slice(end1))…
(假设您的示例中end1
为150
;如果是50
则使用.slice(-end1)
)
答案 1 :(得分:1)
这应该可以帮助你。
多维数组:
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]];
用于迭代数组并仅返回匹配结果的map函数。要在我们的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]