gpt4 book ai didi

javascript - trim 数组的左侧和右侧

转载 作者:行者123 更新时间:2023-11-30 12:20:16 26 4
gpt4 key购买 nike

如何仅从数组的左侧和右侧 trim 连续的假成员?

我想写一个方法来做这样的事情

getLookupKey('prefix', 'prefix', 'middle', 'suffix', 'suffix');
// => 'prefix.prefix.middle.suffix.suffix'

getLookupKey(null, 'prefix', 'middle', 'suffix', null);
// => 'prefix.middle.suffix'

getLookupKey('name');
// => 'name'

getLookupKey();
// => ''

getLookupKey('prefix', null, 'suffix');
// => throws error

其中 getLookupKey 采用可变数量的参数并生成查找键。

我希望此方法忽略数组左侧和右侧的空值,但如果中间有任何空值则抛出。

这里有一些行为规则:

  • 从数组开头开始计算为 false 的数组成员应被删除,直到成员计算为 true。
  • 评估为 false 的数组成员从数组末尾开始,直到成员评估为 true 为止。
  • 计算结果为 false 的成员位于计算结果为 true 的成员之间,应该导致该方法抛出错误。

最佳答案

有趣的问题,这是我对解决方案的看法。我使用 dropWhiledropRightWhile 来完成大部分繁重的工作。

dropWhile 将从左侧删除所有为假的值,直到找到真值。 dropRightWhile 将从右侧删除所有为假的值,直到找到真值。 any 方法用于测试成员中是否存在任何假值。

isFalse 方法只是一种检查假值的方法。将任何值转换为 bool 值只是一个 js 技巧。

function log(value) {
document.getElementById("output").innerHTML += JSON.stringify(value, null, 2) + "\n"
}

function getLookupKey() {
var keyParts = trimArrayFalsey(_.toArray(arguments));
if (_.any(keyParts, isFalse)) {
throw new Error('Center null');
}
return keyParts.join('.');
}

function trimArrayFalsey(arr) {
return _.chain(arr)
.dropWhile(isFalse)
.dropRightWhile(isFalse)
.value();
}

function isFalse(value) {
return !!!value;
}

log(getLookupKey('prefix', 'prefix', 'middle', 'suffix', 'suffix'));
// => 'prefix.prefix.middle.suffix.suffix'

log(getLookupKey(null, 'prefix', 'middle', 'suffix', null));
// => 'prefix.middle.suffix'

log(getLookupKey('name'));
// => 'name'

log(getLookupKey());
// => ''

log(getLookupKey('prefix', null, 'suffix'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.5.0/lodash.min.js"></script>
<pre id="output"></pre>

关于javascript - trim 数组的左侧和右侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com