Ramda 'when' 没有产生预期的结果
Ramda 'when' not producing expected result
我希望 arrayTester 查看数组中的每个数组,如果两个元素都是空字符串,则将它们从数组中删除。相反,我取回了原始数组。
预期结果 = [[], ['string', '']]
实际结果 = [['',''], ['string', '']]
有什么想法吗?
let data = [['',''], ['string', '']]
const emptyString = R.equals('')
const removeEmptyElementsFunc = R.reject(R.isEmpty)
const arrayTester = (data) => {
R.forEach(
R.when(
R.all(emptyString),
R.map(removeEmptyElementsFunc)
)(data))
return data
}
arrayTester(data)
如果您需要将一个空字符串数组映射到一个空数组,您唯一需要做的就是确保它确实只由空字符串组成。 ("transformation" 相当简单:只是 return 一个空数组。)
all(isEmpty)
将 return true
如果数组是由空的东西组成的。 always([])
总是 return 一个空数组。
const arrayTester = map(when(all(isEmpty), always([])));
console.log(
arrayTester([['', ''], ['a', 'b', '']]),
arrayTester([['', '', ''], ['a', 'b', '']]),
arrayTester([['', 'x', ''], ['a', 'b', '']])
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script>const {map, when, all, isEmpty, always} = R;</script>
我希望 arrayTester 查看数组中的每个数组,如果两个元素都是空字符串,则将它们从数组中删除。相反,我取回了原始数组。
预期结果 = [[], ['string', '']]
实际结果 = [['',''], ['string', '']]
有什么想法吗?
let data = [['',''], ['string', '']]
const emptyString = R.equals('')
const removeEmptyElementsFunc = R.reject(R.isEmpty)
const arrayTester = (data) => {
R.forEach(
R.when(
R.all(emptyString),
R.map(removeEmptyElementsFunc)
)(data))
return data
}
arrayTester(data)
如果您需要将一个空字符串数组映射到一个空数组,您唯一需要做的就是确保它确实只由空字符串组成。 ("transformation" 相当简单:只是 return 一个空数组。)
all(isEmpty)
将 return true
如果数组是由空的东西组成的。 always([])
总是 return 一个空数组。
const arrayTester = map(when(all(isEmpty), always([])));
console.log(
arrayTester([['', ''], ['a', 'b', '']]),
arrayTester([['', '', ''], ['a', 'b', '']]),
arrayTester([['', 'x', ''], ['a', 'b', '']])
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>
<script>const {map, when, all, isEmpty, always} = R;</script>