【问题标题】:Comparison between arrays and objects in javascriptjavascript中数组和对象的比较
【发布时间】:2021-10-05 01:49:00
【问题描述】:

我需要比较两个数组/对象,但由于它们来自两个不同的来源并具有不同的格式,所以我无法弄清楚如何。

oldData = [{Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"},{Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"}]


newData = [[Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"],[Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"]]

我尝试使用这些方法进行比较

(JSON.stringify(oldData) == JSON.stringify(newData))
(_.isEqual(oldData, newData)) 

我也试过了,

 _.forEach(newData, function (element: any, i: number) {
      dataObj.push(newData);
  });

但没有什么对我有用。这里的任何帮助将不胜感激。 补充:如何将 newData 转换为有效数据? 谢谢。

【问题讨论】:

  • newData 无效,
  • 你说的“两种不同的格式”是什么意思? newData 绝对无效。
  • 如何将 newData 转换为有效数据?

标签: javascript object multidimensional-array lodash javascript-objects


【解决方案1】:

只有当 newData 是一个字符串时才有可能

const oldData = [{Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"},{Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"}]


const newDataString = `[[Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"],[Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"]]`

const newDataR = JSON.parse(newDataString
  .replace('[[','[{')
  .replace(']]','}]')
  .replace('],[','},{')  
  .replace(/(\w+): /g,'"$1":')
);  
  
console.log(newDataR)
console.log(JSON.stringify(oldData) === JSON.stringify(newDataR))

【讨论】:

    【解决方案2】:

    您可以将两者都转换为字符串并使用正则表达式将 '{' 和 '}' 替换为 '[' 和 ']'。

    let oldData = '[{Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"},{Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"}]'
    
    
    let newData = '[[Row_id: "32F993F", Parameter_Type: "String", UOM: "", rowId: "1"],[Row_id: "88898897-988D-4168-B662-2DECEA0E72BD", Parameter: "id", Parameter_Type: "Integer", UOM: "", rowId: "2"]]'
    
    
    oldData = oldData.replace(/[{]/g, '[');
    oldData = oldData.replace(/[}]/g, ']');
    
    console.log(oldData === newData);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多