首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在lodash中比较和返回索引

在lodash中比较和返回索引
EN

Stack Overflow用户
提问于 2018-02-11 06:46:19
回答 4查看 247关注 0票数 0
代码语言:javascript
复制
var x = [{a:1, b:4,c:5}, {a:1, b:2,c:7}];
var y = [{a:1, b:2,c:6}, {a:1, b:2,c:8}];

我想根据前两个键进行比较,即a,b,如果不相等,则得到索引。在上面的例子中,输出应该取为0,因为b值等于nt。我们如何在javascript或Lodash中实现?谢谢你。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-02-11 07:01:32

假设您想通过前两个键比较数组中的两个对象,下面是一个有效的示例。请随意详述。

代码语言:javascript
复制
var x = [{a:1, b:4,c:5},{a:1, b:2,c:7}]; 
var y = [{a:1, b:2,c:6}, {a:1, b:2,c:8}];

function customizer(obj1, obj2) {
    const [a, b] = Object.keys(obj1).slice(0, 2);

  return obj1[a] === obj2[a] && obj1[b] === obj2[b];
}

xIsEqual = _.isEqualWith(x[0], x[1], customizer);
yIsEqual = _.isEqualWith(y[0], y[1], customizer);

console.log(xIsEqual); // false
console.log(yIsEqual); // true
票数 0
EN

Stack Overflow用户

发布于 2018-02-11 07:34:47

因此您需要一个比较函数,该函数将比较一个对象数组,在该数组中,您希望索引一个对象,该对象具有两个属性ab不相等。

在下面的实现中,如果退出返回-1,则返回这样的索引(0-base)。

代码语言:javascript
复制
function compare(x,y){
   for(let i=0;i<x.length && i<y.length;i++){
   if(x[i].a!=y[i].a || x[i].b!=y[i].b)
        return i;
   }
   return -1;
}
var x = [{a:1, b:4,c:5}, {a:1, b:2,c:7}];
var y = [{a:1, b:2,c:6}, {a:1, b:2,c:8}];
console.log(compare(x,y)); //0
y = [{a:1, b:4,c:6}, {a:1, b:2,c:8}];
console.log(compare(x,y));//-1
y = [{a:1, b:4,c:6}, {a:1, b:3,c:8}];
console.log(compare(x,y));//1

希望这是你想要的。

票数 3
EN

Stack Overflow用户

发布于 2018-02-11 07:01:23

如果要根据特定条件过滤数组,可以使用filter()

代码语言:javascript
复制
y.filter(d => d.a !== d.b);

使用Lodash:

代码语言:javascript
复制
_.filter(y, d => d.a !== d.b);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48726373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档