遮罩替换对象数组中的随机字符串字符

时间:2018-11-21 12:39:42

标签: javascript

var arr = [{
email: 'someemail@somedomain.net',
domain: 'somedomain',
title: 'software developer'
}];

//desired output will be something like:
var arr = [{
email: 's*m*e*a*l@s*m*d*m*i*.n*t',
domain: 's*m*d*m*i*',
title: 's*f*w*r* d*v*l*p*r'
}];

这可以用*随机掩盖,它不需要每隔一个字符。 谢谢!

2 个答案:

答案 0 :(得分:3)

您可以随机更改字符,并将数组连接回字符串。

var string = 'someemail@somedomain.net';

string = Array.from(string, c => Math.random() < 0.5 ? '*' : c).join('');

console.log(string);

答案 1 :(得分:2)

您可以遍历对象,并在字符串上map循环,并在第2、3,...个字母中将任何字母更改为'*'

该解决方案不是随机的,而是根据传递给方法的值,每隔第二,第三,...个字母

var arr = [{
email: 'someemail@somedomain.net',
domain: 'somedomain',
title: 'software developer'
}];

function getMaskedData(d, every) {
  return [...d].map((v,i) => (i + 1) % every  == 0 ? '*' : v).join('')
}

let newObj = {}
for(let [k, v] of Object.entries(arr[0])) {
  newObj[k] = getMaskedData(v, 2)
}

console.log(newObj)