我在一些论坛上读到,应尽可能避免使用lodash链以获得更好的性能和代码的可读性。那么有没有办法在集合上使用本机javascript函数来替换此代码。
RadG.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId != -1 && isChecking) {
isChecking = false;
RadG1.clearCheck();
}
isChecking = true;
}
});
RadG1.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (checkedId != -1 && isChecking) {
isChecking = false;
RadG.clearCheck();
}
isChecking = true;
}
});
像这样的东西,但是我不确定它是否会给它带来任何附加价值
_(userCollection).chain()
.map('name')
.compact()
.uniq()
.value();
答案 0 :(得分:2)
我相信这是你正在寻找的。不需要lodash。
lodash.map
可以更改为Array.prototype.map
lodash.compact
可以更改为Array.prototype.filter
lodash.uniq
可以更改为Set
构造函数,并可选择再次转换为数组。
const users = [
{name: 'Me'},
{name: 'Someone Else'},
{name: 'Someone Else'},
{name: ''},
];
const uniqueNames = Array.from(new Set(users
.map(user => user.name)
.filter(name => name)));
console.log(uniqueNames);

答案 1 :(得分:1)
您可以使用_.flow()
来运行一系列方法:
const arr = [{ name: 'John' }, {}, { name: 'Smith' }, {}, { name: 'John' }, { name: 'Smith' }]
const getUniqeNames = _.flow([
_.partialRight(_.map, 'name'),
_.compact,
_.uniq
]);
const result = getUniqeNames(arr);
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>