我有一个多维数组,如:
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))…
(假设end1
为150
;如果是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]