我正在尝试使用Lodash将对象A合并到对象B中,但我遇到的麻烦是对象A有一些未定义的值,我希望将它们复制到对象B.
_.merge()的Lodash文档说:
"递归地合并源对象的自身可枚举属性,这些属性未解析为未定义到目标对象中."
是否有其他功能可以执行此操作,还是可以轻松覆盖?
编辑A:
样本输入:
A = {
name: "Bob Smith",
job: "Racing Driver",
address: undefined
}
B = {
name: "Bob Smith",
job: "Web Developer",
address: "1 Regent Street, London",
phone: "0800 800 80"
}
Run Code Online (Sandbox Code Playgroud)
预期产出
B = {
name: "Bob Smith",
job: "Racing Driver",
address: undefined,
phone: "0800 800 80"
}
Run Code Online (Sandbox Code Playgroud)
编辑B:
只是为了确认,它需要是一个"深度"合并.对象可能包含嵌套对象.
我想使用该_.union函数创建两个对象数组的并集.Union仅使用基元数组,因为它使用===来检查两个值是否相等.
我想使用键属性比较对象:具有相同键属性的对象将被视为相等.是否有一个很好的功能方式来实现理想的使用lodash?
在lodash中是否有方法映射数组数组
我想做这样的事情,以便它保持数组的结构.
def double(x) { return x*2 }
_([[1,2],[3,4]]).somemethod(double) == [[2,4],[6,8]]
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来创建一个名为dict的字典,其中我存储了文本区域中某些单词的频率.我的数组看起来像这样:
var dict = removeArray.reduce(function(p,c) {
if (p[c] === undefined) {
p[c] = 1;
} else {
p[c]++;
}
return p;
}, {});
Run Code Online (Sandbox Code Playgroud)
我想根据它们的值过滤这个字典的元素.我需要创建一个列表,其中包含值大于1的单词.我的字典看起来像这样:
{
"92173": 6,
"C": 6,
"GJHGWO.NAYE": 1,
"GJHGX4.NAYE": 1,
"GJHGX6.NAYE": 1,
"GJHGX8.NAYE": 1,
"GJHGXA.NAYE": 1,
"GJHGXC.NAYE": 1,
"RBD": 10,
"RBD3": 2,
"SAMBORNSiPOSSSTHRa": 2,
"SAMBORNSiPOSSSTHRa1": 2,
"SAMBORNSiPOSSSTHRa2": 2,
"X": 4,
"X3": 2
}
Run Code Online (Sandbox Code Playgroud)
为了实现我尝试使用lodash,如下:
var filtered = _.find(dict, function(user) {
return user.frecuency > 1;
});
Run Code Online (Sandbox Code Playgroud)
但是自从我得到以后我失败了:
undefined
Run Code Online (Sandbox Code Playgroud)
我不知道如何适当地使用lodash来过滤这个数组.
我的完整代码如下所示:
var splitWords = document.getElementById("texto").value.split(/[["\|~]/);
var removeArray …Run Code Online (Sandbox Code Playgroud)我试图在我的VueJS应用程序中限制一个方法.我首先尝试了以下内容:
export default {
data () {
return {
foo: 'bar'
}
},
methods: {
doSomething () {
console.log('olas')
}
},
created () {
_.throttle(this.doSomething,200)
}
}
Run Code Online (Sandbox Code Playgroud)
但该doSomething方法没有被解雇:https://jsfiddle.net/z4peade0/
然后,我尝试了这个:
export default {
data () {
return {
foo: 'bar'
}
},
methods: {
doSomething: _.throttle( () => {
console.log('olas')
},200)
},
created () {
this.doSomething()
}
}
Run Code Online (Sandbox Code Playgroud)
函数被触发:https://jsfiddle.net/z4peade0/1/
问题是,我无法访问foo限制方法内的属性:
export default {
data () {
return {
foo: 'bar'
} …Run Code Online (Sandbox Code Playgroud) 我正在使用lodash在组件上调用debounce函数,如下所示:
...
import _ from 'lodash';
export default {
store,
data: () => {
return {
foo: "",
}
},
watch: {
searchStr: _.debounce(this.default.methods.checkSearchStr(str), 100)
},
methods: {
checkSearchStr(string) {
console.log(this.foo) // <-- ISSUE 1
console.log(this.$store.dispatch('someMethod',string) // <-- ISSUE 2
}
}
}
Run Code Online (Sandbox Code Playgroud)
checkSearchStr不知道fooundefined如此为什么我的方法this在通过时不知道_.debounce?什么是正确的用法?
如何生成仅包含给定长度的十六进制字符 (0123456789abcdef) 的随机字符串?
如何使用 lodash 库在 JavaScript 中将数组元素从一个位置交换到另一个位置?像这样的东西:
_.swap(array, fromIndex, toIndex) //but this is not working
Run Code Online (Sandbox Code Playgroud)
这是在线 lodash 测试器的链接,我在其中测试了一些方法,但都没有奏效
任何帮助将非常感激。谢谢!
I would like to delete a property and return a new object without mutating the original object.
I know we can do this easily with Lodash like this:
const profile = { name: 'Maria', age: 30 }
_.omit(profile, name) // it returns a new object without the property name {age: 30}
Run Code Online (Sandbox Code Playgroud)
However, I would like to know if it's possible to do it with vanilla JavaScript without assigning that value to undefined or using a filter?
我想使用,memoize但我担心缓存会无限增长,直到发生悲伤.
我无法通过google/stackoverflow搜索找到任何内容.
PS我正在使用lodash v4.