javascript - 比较并返回lodash中的索引

标签 javascript reactjs lodash

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}];

我想根据前 2 个键(即 a、b)进行比较,如果不相等则获取索引。在上面的示例中,由于 b 值不相等,因此输出应获取为 0。我们如何在 javascript 或 Lodash 中实现?谢谢。

最佳答案

因此,您需要一个比较函数来比较一个对象数组,其中您想要一个对象的索引,该对象的两个属性 ab 不相等。

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

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

希望这是你想要的。

关于javascript - 比较并返回lodash中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48726373/

相关文章:

javascript - 当我打开下一个项目时,如何使上面的树列表项目自动关闭?

javascript - 使用 jQuery 将文件输入添加到表单

javascript - 缺少对象选择集 GraphQL+Apollo 错误

javascript - 如何在使用 React-Hooks 单击按钮后显示不同的组件?

javascript - 测试固定电话号码模式的最快方法

javascript - 将 html 聚焦在输入文本的末尾(不仅是光标)

javascript - 为列表中的每个对象进行 api 调用

javascript - 仅当数组存在时 lodash 映射数据

Javascript如何将对象中的空值/未定义值设置为空字符串

javascript - 使用 Javascript 验证一个按钮在另一个按钮之前被单击