json 为什么我在Array.reduce()后得到一个“未定义”的项?[closed]

ulydmbyx  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(98)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答案。

这个问题是由一个打字错误或一个无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我正在努力学习JavaScript。现在,我正在用数组、JSON对象以及sort和reduce方法做实验。这个实验是为了找到www.example.com的NumberOfDiscIntersections任务的一个很好的解决方案Codility.com。我已经看到了周围的解决方案,我正在尝试重现我的解决方案,这样我就真的得到了这个方法。
我现在的代码已经快完成了。我在这里要问的是:为什么在执行以下代码的输出中得到最后一个“undefined”元素?
这是一个完整的JavaScript代码:

C = [2, 1, 1, 3, 2, 3];
answer = solution(C);
console.log(answer);

//circle radius varies from 0..2147483647
function solution(A) {
  //marker = {spot:0, openers:0, closers:0};
  const N = A.length;
  const points = [];
  let left = 0;
  let right = 0;

  // First, I count all borders
  for (i = 0; i < N; i++) {
    left = i - A[i];
    right = i + A[i];
    points.push({
      "position": left,
      "openers": 1,
      "closers": 0
    });
    points.push({
      "position": right,
      "openers": 0,
      "closers": 1
    });
  }
  console.log("points before sort:")
  for (item of points) {
    console.log(item);
  }
  points.sort((a, b) => {
    if (a.position < b.position) {
      return -1;
    } else if (a.position > b.position) {
      return 1;
    }
    return 0;
  });
  console.log("points after sort:")
  for (item of points) {
    console.log(item);
  }
  let parseable = points.reduce((acc, object) => {
    var index = acc.map((o) => o.position).indexOf(object.position);
    if (index == -1) {
      acc.push(object);
    } else {
      acc[index].openers += object.openers;
      acc[index].closers += object.closers;
    }
    return acc;
  }, []);
  console.log("points after reduce:")
  for (item of parseable) {
    console.log(item);
  }
}

Thia是我的控制台输出:
排序前的点数:位置:-2,开启器:1、闭门器:0 }位置:2、开启剂:0,闭合器:1 }职务:0,开启程序:1、闭门器:0 }位置:2、开启剂:0,闭合器:1 }职务:1、开启器:1、闭门器:0 }位置:3、开启剂:0,闭合器:1 }职务:0,开启程序:1、闭门器:0 }位置:6、开启器:0,闭合器:1 }职务:2、开启剂:1、闭门器:0 }位置:6、开启器:0,闭合器:1 }职务:2、开启剂:1、闭门器:0 }位置:8、开启器:0,闭合器:1 }分后排序:位置:-2,开启器:1、闭门器:0 }位置:0,开启程序:1、闭门器:0 }位置:0,开启程序:1、闭门器:0 }位置:1、开启器:1、闭门器:0 }位置:2、开启剂:0,闭合器:1 }职务:2、开启剂:0,闭合器:1 }职务:2、开启剂:1、闭门器:0 }位置:2、开启剂:1、闭门器:0 }位置:3、开启剂:0,闭合器:1 }职务:6、开启器:0,闭合器:1 }职务:6、开启器:0,闭合器:1 }职务:8、开启器:0,闭合器:1 }分后减少:位置:-2,开启器:1、闭门器:0 }位置:0,开启程序:2、闭门器:0 }位置:1、开启器:1、闭门器:0 }位置:2、开启剂:2、闭门器:2 }职务:3、开启剂:0,闭合器:1 }职务:6、开启器:0,闭合器:2 }职务:8、开启器:0,闭合器:1 }未定义
为什么我有这个'未定义'的项目在减少数组的结束?

2skhul33

2skhul331#

因为您不会从solution函数返回任何内容。
answer变量的默认值为undefined,即在控制台中记录的值。

answer = solution(C); // `answer` is `undefined`
console.log(answer); // logs `undefined`

return来自函数的内容,answer变量可以保存这些内容。
感谢

相关问题