【问题标题】:Comparison of two arrays regarding the text关于文本的两个数组的比较
【发布时间】:2021-04-26 05:22:36
【问题描述】:

我有两个要比较的数组。因此,我想检查他们是否对"text": ... 有相同的元素。如果相等则返回true,否则返回false

  englishData = [
      {"data":"sandwich","text":"Sandwich"},
      {"data":"toast","text":"Cuisine"},
      {"data":"fries","text":"Pommes"},
      {"data":"salad","text":"Salad"},
      ]
  franceData = [
      {"data":"sandwich","text":"Sandwich"},
      {"data":"toast","text":"Kitchen"},
      {"data":"fries","text":"Pommes"}]

到目前为止,我使用普通的 for 循环进行了尝试,例如:

for (let i = 0; i < actualData; i++) {
   for (let j = 0; j < plannedData; j++) {
     if (actualData[i].text === plannedData[i].text) {
       return true
     } if (actualData[i].text != plannedData[j].text) {
       continue;
      } 
     }
       return false
  }
 }

由于长度不同,我想将franceData 中的每个元素与原始数组englishData 中的所有元素进行比较。 它有点像 woking,但我不确定它是否真的是性能方面的最佳解决方案,... .

我也想过一些 if 语句,比如:

  if(franceData.text.includes(englishData.text)){ return true }

【问题讨论】:

  • 最终游戏是什么?你想达到什么目的?你能提供一个上下文吗?谢谢。

标签: javascript arrays vue.js


【解决方案1】:

如果你想找出共同的元素,你可以试试这样的方法

englishData = [
  { data: "sandwich", text: "Sandwich" },
  { data: "toast", text: "Cuisine" },
  { data: "fries", text: "Pommes" },
  { data: "salad", text: "Salad" },
];
franceData = [
  { data: "sandwich", text: "Sandwich" },
  { data: "toast", text: "Kitchen" },
  { data: "fries", text: "Pommes" },
];

var res = englishData.filter((ede) =>
  franceData.some((fde) => ede.text === fde.text)
);
console.log(res);

output:
[
  { data: 'sandwich', text: 'Sandwich' },
  { data: 'fries', text: 'Pommes' }
]

您可以使用 map() 代替过滤器来获取每个匹配项的真或假。

englishData = [
  { data: "sandwich", text: "Sandwich" },
  { data: "toast", text: "Cuisine" },
  { data: "fries", text: "Pommes" },
  { data: "salad", text: "Salad" },
];
franceData = [
  { data: "sandwich", text: "Sandwich" },
  { data: "toast", text: "Kitchen" },
  { data: "fries", text: "Pommes" },
];

var res = englishData.map((ede) =>
  franceData.some((fde) => ede.text === fde.text)
);
console.log(res.join("\n"));

output:
true
false
true
false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2010-11-09
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多