javascript - trim 对象中的所有值;错误: Cannot set property of undefined

标签 javascript

我从 API 接收此对象:

{
  "id": 10,
  "lectura": "zx71                          ",
  "articulo": "ZX71                          ",
  "ubicacion": "ddd                           ",
  "uds": 5,
  "usuario": null,
  "createD_AT": "2019-12-04T08:19:56.12"
}

我想 trim 这些值,所以我有这个功能:

const trimValues = object => {
  console.log(JSON.stringify(object, null, 2))
  const trimmedProperties = Object.entries(object).reduce(
    (acc, [key, value]) => {
      if (typeof value == "string") {
        return (acc[key] = value.trim());
      }
    },
    {}
  );
  return { ...object, trimmedProperties };
};

问题是我收到此错误消息:

core.js:9110 ERROR TypeError: Cannot set property 'lectura' of undefined

此行返回错误:return (acc[key] = value.trim());

我错过了什么?

最佳答案

有 3 个主要错误,第一个错误是,如果 value 不是字符串,则您没有返回任何内容,这意味着reduce 的下一次迭代将收到 acc===undefined,第二个是由于赋值调用的返回将仅返回键的值而不是整个对象,最后您还必须解构 trim 器属性,您可以通过执行以下操作来修复它

const trimValues = object => {
  console.log(JSON.stringify(object, null, 2))
  const trimmedProperties = Object.entries(object).reduce(
    (acc, [key, value]) => {
      if (typeof value == "string") {
        acc[key] = value.trim();
      }
      return acc
    },
    {}
  );
  return { ...object, ...trimmedProperties };
};

但是,确实没有理由只在迭代后将未 trim 的属性(不是字符串)与 trim 的属性组合起来,而是为了简化它并删除不必要的迭代,您可以执行以下操作:

const trimValues = object => {
    console.log(JSON.stringify(object, null, 2))
    return Object.entries(object).reduce((acc, [key, value]) => {
        acc[key] = (typeof value === "string") ? value.trim() : value;
        return acc
    }, {});
};

关于javascript - trim 对象中的所有值;错误: Cannot set property of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59176085/

相关文章:

javascript - 在 JavaScript 中使用 switch 语句性能运行函数

javascript - ajax 和变量范围

javascript - 如何实现当用户在 native 中按下图片时动态显示口袋妖怪详细信息的详细信息屏幕?

javascript - Highstock 源代码中的奇怪字符

javascript - flot 中的 getCanvas 忽略 div 中给出的原始尺寸并尊重浏览器缩放级别

javascript - 从表创建 jquery 实时预览

javascript - 将 `Object.defineProperty` 与 RangeError 一起使用

javascript - Google Maps v3 - 删除多边形上的顶点

javascript - 在浏览器中检测图像的粘贴事件(jquery/javascript)

javascript - 是否可以使用 Dat.gui 添加一个没有任何对象的 slider ?