小编whi*_*cle的帖子

将函数设置为已弃用

几个月前,我创建了一个在 Npm 上发布的 Js 库。现在我想重命名一些函数。我读了这篇文章,我认为它非常有用。

假设我有一个文件A

export function function1(param1, param2) {
  return param1 + param2
}
Run Code Online (Sandbox Code Playgroud)

库用户可用的导出函数位于 index.js 文件中:

export { function1 } from './A'
Run Code Online (Sandbox Code Playgroud)

我想将其重命名为sum(param1, param2).

我创建了这个obsolete函数:

function obsolete(newFunction, oldFnName, newFnName) {
  const wrapper = function () {
    console.warn(
      `Obsolete function called. Function '${oldFnName}' has been deprecated, please use the new '${newFnName}' function instead.`
    )
    newFunction.apply(this, arguments)
  }
  wrapper.prototype = newFunction.prototype
  return wrapper
}
Run Code Online (Sandbox Code Playgroud)

现在我必须做什么?我想我必须以这种方式修改A文件:

/** @deprecated since version 2.0 */ …
Run Code Online (Sandbox Code Playgroud)

javascript

10
推荐指数
2
解决办法
424
查看次数

了解 D3 数据绑定键访问器

我是 D3 的新手,我正在做一个简单的例子,试图了解数据绑定的工作原理。

基本上我有一个颜色数组,一个用于添加颜色的函数和一个从索引中删除颜色的函数。不起作用的是删除操作。如果我将 0 设置为要删除的索引,我会看到 D3 将最后一个元素设置为要删除的元素。如果我使用 key accessor d => d,它就可以工作。我有很多问题。

这是我的代码:

const data = {
  colors: ["Black", "White", "Brown"],
  addColor(color) {
    this.colors.push(color);
  },
  removeColorByIndex(index) {
    this.colors.splice(index, 1);
  }
};

const root = d3.select("#root");
const barsContainer = d3.select("#bars-container");
const addButton = d3.select("#add-button");
const removeButton = d3.select("#remove-button");

addButton.on("click", () => {
  const newColor = d3.select("#color-input").node().value;
  data.addColor(newColor);
  update();
});
removeButton.on("click", () => {
  const index = d3.select("#index-input").node().value;
  data.removeColorByIndex(index);
  update();
});

function update() {
  barsContainer
    .selectAll("div")
    .data(data.countries, (d, i) => …
Run Code Online (Sandbox Code Playgroud)

html javascript d3.js

5
推荐指数
1
解决办法
141
查看次数

使用 reduce 对对象数组中的值求和

我有这个对象数组:

const data = [
  {val: 40, color: 'red'},
  {val: 5, color: 'green'},
  {val: 55, color: 'lime'}
]
Run Code Online (Sandbox Code Playgroud)

这是我想获得的:

const result = [
  {val: 40, color: 'red'},
  {val: 45, color: 'green'},
  {val: 100, color: 'lime'}
]
Run Code Online (Sandbox Code Playgroud)

所以每个项目应该有相同的颜色和以前数据的累积值。

这是我的尝试:

const data = [
  {val: 40, color: 'red'},
  {val: 5, color: 'green'},
  {val: 55, color: 'lime'}
]
Run Code Online (Sandbox Code Playgroud)

错误在哪里?为什么r[i - 1]是未定义的?

javascript reduce cumulative-sum

1
推荐指数
2
解决办法
239
查看次数

将范围舍入到步长值

我有一个这样的数字数组:

const dataset = [0.5, 2, 1, 93, 67.5, 1, 7, 34];
Run Code Online (Sandbox Code Playgroud)

所以最小值为 0.5,最大值为 93。我想将该数据集的极值四舍五入为一个step值。

例如:

  • 如果step = 5结果应该是[0, 95]
  • 如果step = 10结果应该是[0, 100]

新的最小值应该总是 <= 数据集中的实际最小值,新的最大值应该总是 >= 数据集中的实际最大值,它们都应该是 的倍数step

注意:如果它也适用于负值,我应该很好。

我创建了该roundToNearest函数,但不足以解决我的问题:

function computeExtremisRounded(dataset: number[], step: number): [number, number] {
   const [minValue, maxValue] = getMinAndMax(dataset) // suppose it exists
   const roundedMinValue = roundToNearest(minValue, step)
   const roundedMaxValue = roundToNearest(maxValue, step)
   return [roundedMinValue, roundedMaxValue]
}

function roundToNearest(value: number, step: number): …
Run Code Online (Sandbox Code Playgroud)

javascript typescript

1
推荐指数
1
解决办法
40
查看次数

标签 统计

javascript ×4

cumulative-sum ×1

d3.js ×1

html ×1

reduce ×1

typescript ×1