我想_.includes在我的代码中使用lodash的方法,但是任何时候我都有一个对象数组,我无法让它工作,而是最终依赖于该_.find方法.
从我的测试中我只能_.includes使用简单的数组.但也许这就是它的工作方式?
我对Lodash和编程很新,所以我想如果我错过了一些关于如何使用这种方法的话,我会问.
我使用以下代码创建了一个jsbin:http://jsbin.com/regojupiro/2/
var myArray = [];
function createArray(attName, attId, otherId) {
var theObject = {};
theObject.attributeName = attName;
theObject.attributeId = attId;
theObject.otherId = [otherId];
return theObject;
}
myArray.push(createArray('first', 1001, 301));
myArray.push(createArray('second', 1002, 302));
myArray.push(createArray('third', 1003, 303));
myArray.push(createArray('fourth', 1004, 304));
var isPresent1 = _.includes(myArray, {'attribtueId' : 1001});
var isPresent2 = _.includes(myArray, 1001);
var found = _.find(myArray, {'attributeId' : 1001});
console.log(isPresent1);
console.log(isPresent2);
console.log(found);
console.log(myArray);
Run Code Online (Sandbox Code Playgroud)
两个"isPresent"变量都返回false,但该_.find方法返回正确的对象.
_.includes当我只需要进行简单的真/假检查以查看我的对象数组中是否存在值时,我希望能够更好地理解如何使用该方法.
或者,如果这是工作的错误工具,该_.find方法是适合这项工作的工具,还是其他一些我不熟悉的lodash方法?
谢谢您的帮助!
该_.includes()方法与SameValueZero比较器进行比较,这是一种特殊的比较,大多类似于===. 即使数组中有一个看起来像{'attribtueId' : 1001}该_.includes()调用也永远找不到它的对象,因为两个不同的对象永远不会相互比较===。
相反,当您将对象传递给 时_.find(),库假设您希望它执行比较_.matches(),这将比较“目标”对象的属性。因此,就您而言,_.find()这可能是正确的选择。该_.includes方法确实填补了一个独特的空白。
| 归档时间: |
|
| 查看次数: |
7376 次 |
| 最近记录: |