问题在标题中,但这是一个更长的解释.
很久以前我学到了一些不错的javascript函数,如reduce,filter,map 等.我真的很喜欢它们并开始经常使用它们(它们看起来很时尚,我认为因为它们是原生功能,所以它们应该比我的旧环更快).
最近我需要执行一些重js计算,所以我决定检查它们的速度有多快,令我惊讶的是它们不是更快,它们要慢得多(慢3到25倍)
此外,我还没有检查每个功能,这是我的jsperf测试:
那么为什么本机函数比旧循环慢得多,如果它们没有做得更好,那么创建它们的重点是什么.
我假设速度损失是由于调用它们内部的函数,但它仍然不能证明这种损失.此外,我不明白为什么用这些函数编写的代码更具可读性,更不用说每个浏览器都不支持它们.
我有一个使用该.includes()
函数的对象数组。我正在用数组中的对象搜索该数组(对象是相同的)。但是似乎没有匹配项。我已经在这个小提琴中重复了这个问题。代码也在下面。那么检查数组是否包含对象的正确方法是什么?
let list1 = [{
name: "object1"
},
{
name: "object2"
},
{
name: "object3"
},
{
name: "object4"
}
]
if (list1.includes({
name: "object1"
})) {
document.write('contains')
} else {
document.write('doesnt')
}
Run Code Online (Sandbox Code Playgroud)
鉴于以下
var content = [{
"set_archived": false,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2016-12-01T18:23:29.743333Z",
"created": "2016-12-01T18:23:29.743333Z",
"archived": false
}]
},
{
"set_archived": true,
"something": [{
"id": "aa7bb3db-19a2-4ef6-5944-892edaaf53c3",
"modified": "2017-01-30T19:42:29.743333Z",
"created": "2017-01-30T19:42:29.743333Z",
"archived": false
}]
}
];
Run Code Online (Sandbox Code Playgroud)
使用 Lodash,我如何确定对象数组中的一个set_archived
或something.archived
是否等于真?
所以在这种情况下,因为第二个对象set_is_archived
是真的,那么预期的响应应该是真的。如果任一对象中的所有项目均为假,则响应应为假。
假设我有一个对象数组:
let arr = [
{
name: 'Jack',
id: 1
},
{
name: 'Gabriel',
id: 2
},
{
name: 'John',
id: 3
}
]
Run Code Online (Sandbox Code Playgroud)
我需要检查该数组是否包含名称“Jack”,例如使用:
if (arr.includes('Jack')) {
// don't add name to arr
} else {
// push name into the arr
}
Run Code Online (Sandbox Code Playgroud)
但是 arr.includes('Jack') 返回 false,如何检查对象数组是否包含名称?
我有这个代码:
const arr = [
{name:"Bill", age:11},
{name:"Bill", age:11}
]
console.log(arr.includes({name:"Bill", age:11}))
Run Code Online (Sandbox Code Playgroud)
这里我想检查数组是否包含{name:"Bill", age:11}
.
为什么我会假?以及如何使用包含进行此检查?