jquery - 如何根据 jQuery 中对象数组的比较来更改键值?

标签 jquery arrays compare key key-value

我在 jQuery 中有两个数组,如下所示。

var arr1 = [{A: "t1"},{A: "t3"}];

var arr2 = [{A: "t1",B:""},{A: "t2",B:""},{A: "t3",B:""},{A: "t4",B:""},{A: "t5",B:""},{A: "t6",B:""}];

var arr3 = []; //Only for output

现在,arr3 中的输出应该是:

  • arr2 中的所有值
  • 如果“A”键存在,“B”键应为 在 arr1 中
  • 如果“A”键不存在,“B”键应 在 arr1 中

所以,我想要的 arr3 输出应该是:

arr3 = [{A: "t1",B:"Yes"},{A: "t2",B:"No"},{A: "t3",B:"Yes"},{A: "t4",B:"No"},{A: "t5",B:"No"},{A: "t6",B:"No"}];

这是我迄今为止尝试过的

var arr1 = [{A: "t1"},{A: "t3"}];
var arr2 = [{A: "t1",B:""},{A: "t2",B:""},{A: "t3",B:""},{A: "t4",B:""},{A: "t5",B:""},{A: "t6",B:""}];
var arr3 = []; //Only for output

arr1.forEach(function(x) {
  arr2.forEach(function(y) {
    if (x.A == y.A) {
      arr3.push({
        A: x.A,
        B: "Yes"
      });
    } else {
      arr3.push({
        A: x.A,
        B: "No"
      });
    }
  });
});

console.log(arr3);

//Output
0: {A: "t1", B: "Yes"}
1: {A: "t1", B: "No"}
2: {A: "t1", B: "No"}
3: {A: "t1", B: "No"}
4: {A: "t1", B: "No"}
5: {A: "t1", B: "No"}
6: {A: "t3", B: "No"}
7: {A: "t3", B: "No"}
8: {A: "t3", B: "Yes"}
9: {A: "t3", B: "No"}
10: {A: "t3", B: "No"}
11: {A: "t3", B: "No"}

这里的问题是它对 arr1 中的每个项目重复,并且计数加倍。 我知道它应该在 if 和 else 之间的某个位置中断,这样它就不会重复。

我也尝试过检查下面的链接,但没有得到太多帮助。

filter array of objects based on separate object keys, values

js - How to change one key's value based on another key's value in array of objects

Object comparison based on keys

compare array of objects

提前致谢。

最佳答案

使用 map 并查找数组是否不大。

保存缩减和推送

var arr1 = [{ A: "t1" }, { A: "t3" }];
var arr2 = [{ A: "t1", B: ""}, { A: "t2", B: "" }, { A: "t3", B: "" }, { A: "t4", B: "" }, { A: "t5", B: "" }, { A: "t6", B: "" }];
var arr3 = arr2.map(
  item2 => ({
    A: item2.A,
    B: arr1.find(item1 => item1.A === item2.A) ? 'Yes' : 'No'
  }));

console.log(arr3);

关于jquery - 如何根据 jQuery 中对象数组的比较来更改键值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61094718/

相关文章:

javascript - 如何从对象中获取值?

jquery - 多个下拉菜单的自定义 CSS

python - 将 numpy 数组保存到二进制文件

java - Java 中以方法的形式将 int 数组的内容相加

c# - 将字符串与通配符进行比较

java - 比较 2 个二维数组 - Java

string - 比较元胞数组中的字符串

android - 调用 setDisplayChild() 时 View 翻转器崩溃;在准备好添加javascript接口(interface)的文档上,请帮助

javascript - 提取网页的 javascript 中存在的字段值

通过多个表单输入的 PHP 数组