有如下字符串:4:1,2:3,3:5,4:3,要求不管是冒号前面还是后面的数字都各只能出现一次,如果有重复,只保留最前面的。上面的字符串4在冒号前面出现了2次就只取前面的,结果为:4:1,2:3,3:5
例 :
4:1,2:3,3:5,4:3 =====》 4:1,2:3,3:5
4:1,2:3,5:3,4:2 =====》 4:1,2:3
4:1,2:4,3:5,4:3 =====》 4:1,2:4,3:5
求方法。
function test(str) { var _map = {}, _arr = [], entries = str.split(','), entry = null, entryKV = null, entryK = null, entryV = null for(var i = 0, len = entries.length; i < len; i ++) { entry = entries[i] entryKV = entry.split(':') entryK = 'k' + entryKV[0] entryV = 'v' + entryKV[1] if (!_map[entryK] && !_map[entryV]) { _arr.push(entry) } _map[entryK] = true _map[entryV] = true } console.log(_arr.join(',')) } test('4:1,2:3,3:5,4:3') test('4:1,2:3,5:3,4:2') test('4:1,2:4,3:5,4:3') 输出 4:1,2:3,3:5 4:1,2:3 4:1,2:4,3:5