开发者问题收集

如何获取数组

2020-01-10
64

我有一个对象数组。每个对象都有一个 leftpixel 键。我想要实现的是获取一个数组,即 newArray,其元素通过将数组中第一个对象的 leftpixel 键值减去第二个 leftpixel 键值而得出,这将构成 newArray 的第一个元素,第二个元素将通过将数组中第二个对象的 leftpixel 键值减去第三个 leftpixel 键值而获得。

我拥有的数组是这样的

[
  { 
    A: "FSDF"
    B: "$145.0"
    leftpixel: 2 
  },
  { 
    A: "DFH"
    B: "$463.0"
    leftpixel: 191 
  },
  { 
    A: "FDH"
    B: "$546.0"
    leftpixel: 191 
  },
  { 
    A: "DSG"
    B: "$154.0"
    leftpixel: 192
  }
]

我想要的新数组应该是这样的

newArray = [189, 0, 1] 
2个回答

您可以对数组进行切片,并获取切片数组项与同一索引处的原始数组的增量

var data = [{ A: "FSDF", B: "$145.0", leftpixel: 2 }, { A: "DFH", B: "$463.0", leftpixel: 191 }, { A: "FDH", B: "$546.0", leftpixel: 191 }, { A: "DSG", B: "$154.0", leftpixel: 192 }],
    deltas = data.slice(1).map((v, i) => v.leftpixel - data[i].leftpixel);

console.log(deltas);
Nina Scholz
2020-01-10

这是一个略显冗长的实现,其中还包括第一个可以稍后切片/过滤掉的值。

let data = [{
    A: "FSDF",
    B: "$145.0",
    leftpixel: 2
  },
  {
    A: "DFH",
    B: "$463.0",
    leftpixel: 191
  },
  {
    A: "FDH",
    B: "$546.0",
    leftpixel: 191
  },
  {
    A: "DSG",
    B: "$154.0",
    leftpixel: 192
  }
]

let result = data.map((item, index, arr) => {

  if (index === 0) {
    return item.leftpixel;
  }

  return item.leftpixel - arr[index - 1].leftpixel
})

console.log(result.slice(1))
Nick
2020-01-10