javascript - typescript 从数组的前端和末尾获取 X 个元素

标签 javascript arrays angular typescript

我想优化下面的代码,因为它看起来步骤太多。该代码确实有效,但是我想看看是否有更好的方法。我基本上想从shipmentTracings 数组中获取第一个X 元素和最后一个X 元素。有没有办法优化这部分?

此外,我根据 numberOfTracings/2 导出数组左侧和右侧所需的元素。对于奇数,我将向下舍入,但您可以看到我正在使用 paddingRight 来使用余数,如果有的话。还有更好的方法吗?

        const numberOfTracings = environment.shipmentTracingMarkerLimit - this.shipmentTracking.shipmentStops.length;  // i.e. 7
        const paddingLeft = Math.floor(numberOfTracings / 2);
        const paddingRight = numberOfTracings - paddingLeft * 2; //i am doing this because I want to use that extra array spot to be padded.  It 
        const myFirstArr = this.shipmentTracking.shipmentTracings.slice(0, paddingLeft);
        const myFirstArr2 = this.shipmentTracking.shipmentTracings.slice(-(paddingLeft + paddingRight));
        const myFirstArr3 = myFirstArr.concat(myFirstArr2);
        myFirstArr3.forEach((shipmentTracing) => this.createRouteMarkerForTracing(shipmentTracing));

最佳答案

使用评论中的示例,您可以使用 ES2015 spread operator做这样的事情:

const fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];

const padding = 2;

const firstAndLast = [...fruits.slice(0, padding), ...fruits.slice(-padding)];

console.log(firstAndLast);

编辑:根据基于 padding 计算左/右切片的注释进行更新:

const fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango", "Dragon Fruit", "Kiwi", "Apricot", "Lime", "Plantain"];

const getFirstAndLast = (arr, padding) => {
  const left = Math.ceil(padding / 2);
  const right = padding - left;
  return [...arr.slice(0, left), ...arr.slice(-right)];
};

// gets first 4 and last 3 given a padding of 7
const firstAndLast = getFirstAndLast(fruits, 7);

console.log(firstAndLast);

关于javascript - typescript 从数组的前端和末尾获取 X 个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55056053/

相关文章:

javascript - 对象的随机数组

ios - 使用 slider 导航一系列图像

angular - 克隆元素无法在 Angular4 中提交

javascript - 我应该在 BehaviorSubject 中使用 asObservable 吗?

java - 同步访问 int 数组中的特定索引

javascript - 输出 YYYY-MM-DD 非完整日期字符串

javascript - 书签 LMS、Moodle SCORM

javascript - 随机显示问题的名称值对的多维数组(javascript/jquery)

javascript - 如何在Jquery中读取cookie值并创建另一个具有相同值的cookie

java - 从一个列表创建多个列表(按特定字段对列表的对象进行分组)