首页 > 解决方案 > 替换对象数组中的字符

问题描述

我有一个对象数组,其中可能包含我希望删除的某些字符。在示例中为 £。我的数组结构如下:

const testArray = [
  { ASIN: 'ABC123', Rank: '£50', Sales: '£80' },
  { ASIN: 'ZYX123&', Rank: '£70', Sales: '£20' },
];

我想知道我是否可以通过获取数组,将其拆分为字符串,使用替换然后再次加入来使用类似替换功能的东西。

例如textArray.split(',').replace(/^\£/, '').join(',')

有人向我展示了这段代码,但我无法让它工作:

myArray.map(item => {
      return Object.entries(item).reduce((agg, [key, value]) => {
        agg[key] = value.replace(/^\£/, '');
        return agg;
      }, {});
    });

我拆分成字符串并重新加入方法会起作用吗?有没有这样做的最佳实践方法?

标签: javascriptarrays

解决方案


一种选择是将对象字符串化,替换,然后解析它:

const testArray = [
  { ASIN: 'ABC123', Rank: '£50', Sales: '£80' },
  { ASIN: 'ZYX123&', Rank: '£70', Sales: '£20' },
];

const newTestArray = JSON.parse(
  JSON.stringify(testArray).replaceAll('£', '')
);
console.log(newTestArray);

也可以通过映射来转换对象Object.fromEntries

const testArray = [
  { ASIN: 'ABC123', Rank: '£50', Sales: '£80' },
  { ASIN: 'ZYX123&', Rank: '£70', Sales: '£20' },
];
const newTestArray = testArray.map(
  obj => Object.fromEntries(
    Object.entries(obj)
      .map(([key, val]) => [key, val.replaceAll('£', '')])
  )
);
console.log(newTestArray);


推荐阅读