这个字符串处理还有没有更好的方法呢, 我写了2个方法

//判断字符串为空的方法
const isEmpty = (value) => {
    if (value === null || value === 'undefined' || value === undefined || value === '') {
        return true;
    }

    if (typeof value === 'string' && value.trim() === '') {
        return true;
    }

    return false;
}

///////////////
//要处理的字符串
//每组key-value用,分隔, key-value之间是:
//想要的结果, 取出所有key, 组成array, 如: ['1', '2']
///////////////
let depts = "1:a,2:b,";


// 方法1:
let result1 = [];
if (!isEmpty(depts)) {
    let deptsArray = depts.split(',');
    for (let deptArray of deptsArray) {
        if (deptArray) {
            let deptId = deptArray.split(':')[0];
            result1.push(deptId);
        }
    }
}

console.log(result1);//结果 ['1','2']

// 方法2:
let result2 = isEmpty(depts) ? [] : depts.split(',')
    .filter(item => !isEmpty(item))
    .map(item => item.split(":")[0]);

console.log(result2);

// 方法3: ?????

有错误的话, 欢迎指正

阅读 1.3k
1 个回答

格式确定的话,可以用正则匹配。

let depts = "1:a,2:b,3:5,";
let arr=depts.match(/\d+(?=\:)/g);
console.log(arr)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题