使用 lodash 在数组中替换
Replace in array using lodash
有没有一种简单的方法可以用数组中一个基元的所有外观替换另一个基元。这样['a', 'b', 'a', 'c']
在用x
替换a
时会变得['x', 'b', 'x', 'c']
.我知道这可以通过地图功能来完成,但我想知道是否忽略了一种更简单的方法。
在您的示例具有的特定字符串情况下,您可以使用以下方法在本地执行此操作:
myArr.join(",").replace(/a/g,"x").split(",");
其中","是数组中未出现的字符串。
也就是说,我不认为_.map
的问题 - 这听起来像是更好的方法,因为这实际上是您正在做的事情。您将数组映射到自身,并替换值。
_.map(myArr,function(el){
return (el==='a') ? 'x' : el;
})
我不知道
"更简单",但你可以让它可重用
function swap(ref, replacement, input) {
return (ref === input) ? replacement : input;
}
var a = ['a', 'b', 'a', 'c'];
_.map(a, _.partial(swap, 'a', 'x'));
如果数组包含可变对象,则使用 lodash 的查找函数很简单。
var arr = [{'a':'a'}, {'b':'b'},{'a':'a'},{'c':'c'}];
while(_.find(arr, {'a':'a'})){
(_.find(arr, {'a':'a'})).a = 'x';
}
console.log(arr); // [{'a':'x'}, {'b':'b'},{'a':'x'},{'c':'c'}]
另一个简单的解决方案。适用于字符串数组,替换所有出现项,读取良好。
var arr1 = ['a', 'b', 'a', 'c'];
var arr2 = _.map(arr1, _.partial(_.replace, _, 'a', 'd'));
console.log(arr2); // ["d", "b", "d", "c"]
像这样的替换方法可以工作:
const replacer = (contextArray, itemToReplace, replaceWith) => _.map(
contextArray,
(n) => n === itemToReplace ? replaceWith : n
)
console.log(replacer(['a', 'b', 'a', 'c'], "a", "x"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.19/lodash.min.js"></script>
相关文章:
- 如何检查和替换数组中的值
- JavaScript:替换数组中的字符串
- 用对象属性替换数组元素
- 替换数组中已更改的元素
- 在javascript中使用regex和replace()替换数组元素
- innerhtml.replace没有替换数组javascript中的所有单词
- 替换数组中的一个字符串
- Jquery 字符串替换,只替换数组的开头
- JS:边缘情况问题 - 替换数组中的变量
- javascript 替换数组会导致更改整个列
- 元素不在数组javascript&替换数组
- 在JavaScript中全局替换数组模式中的字符串
- Javascript:用一个新值替换数组中的所有内容
- 如何替换数组
- 如何用另一个数组的元素替换数组中的元素
- Javascript:用另一组项替换数组中的项
- 在Javascript中,用另一个数组替换数组的部分的最快方法是什么?
- 使用javascript替换数组中的连续整数
- 字符串替换数组映射
- 在数组中搜索字符串/值,替换数组中的字符串/值