字符串中的undefined怎么去掉

/glbminip19/glbyback/admin/flashbuy/upload/1583920377.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920288.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920342.jpg,undefined,undefined,undefined微信图片_20200311184523.png微信截图_20200311184537.png

阅读 6.1k
5 个回答
const str = '/glbminip19/glbyback/admin/flashbuy/upload/1583920377.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920288.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920342.jpg,undefined,undefined,undefined';
str.split(',').filter(i => i !== 'undefined')

这个得到了一个数组,如果要字符串的话:

const str = '/glbminip19/glbyback/admin/flashbuy/upload/1583920377.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920288.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920342.jpg,undefined,undefined,undefined';
str.split(',').filter(i => i !== 'undefined').join(',')

应用到你的代码里面:
kvimgssjoin之前,先调filter

在添加到数组之前就确认添加的都是需要的数据,要好过添加后再遍历数组然后取掉不必要的数据吧。

function addToArr () {
    let arr = [];
    for (let i = 0; i < arguments.length; i ++) {
        if (typeof arguments[i] !== 'undefined') {
            arr.push(arguments[i]);
        }
    }
    return arr;
}
this.kvimgs = addToArr(
    this.ruleForm.imageUrlKV1,
    this.ruleForm.imageUrlKV2,
    this.ruleForm.imageUrlKV3,
    this.ruleForm.imageUrlKV4,
    this.ruleForm.imageUrlKV5,
    ...
);

str.replace('undefined','')

image.png

  1. push的时候为什么不 array.push(1,2,3,4)呢?
  2. 因为你的问题是字符串拼接导致的所以只能替换字符串了
    ` /glbminip19/glbyback/admin/flashbuy/upload/1583920377.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920288.jpg,/glbminip19/glbyback/admin/flashbuy/upload/1583920342.jpg,undefined,undefined,undefined.replace(/,undefined|undefined,/g,'')

看了下截图,push的逻辑需要改下,参考这个:
kvimgs = new Array(1,2,3,4,undefined).filter(Boolean).join()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏