【问题标题】:To check the two array of object values based on the respective key?要根据各自的键检查两个对象值数组?
【发布时间】:2019-06-04 00:08:56
【问题描述】:

我正在尝试根据特定键比较两个对象值数组。两个对象具有相同的键,基于我必须检查值是否相等。一个数组是实际的 JSON 对象,第二个是测试数据,我们必须用 JSON 对象验证测试数据,而且如果测试数据值相同,它可能还有一些额外的空间,我们也需要修剪该值。

   var actualObject= [
  {
    "q1": "componentWillMount"
  },
  {
    "q2": "willComponentUpdate"
  },
  {
    "q3": "setState"
  },
  {
    "q4": "componentUpdated"
  }
]

Var testData =[
{q1: "componentWillMount"},
{q2: "willComponentUpdate"},
{q3: " PropTypes"},
{q4: "componentDidMount"}]

在选择单选按钮时,我将从 Html 代码中获取 testData 值。现在我需要检查实际 JSON 中有多少答案是正确的。

它的 JS 代码:

var marks= 0;
var wrong = 0;
for(var k =0 ; k<actualObject.length;k++){
if(JSON.stringify(actualObject[k]) == JSON.stringify(testData[k])){
    marks++;
}
else {
    wrong++;
}
}

var actualObject = [{
    "q1": "componentWillMount"
  },
  {
    "q2": "willComponentUpdate"
  },
  {
    "q3": "setState"
  },
  {
    "q4": "componentUpdated"
  }
]

var testData = [{
    q1: "componentWillMount"
  },
  {
    q2: "willComponentUpdate"
  },
  {
    q3: " PropTypes"
  },
  {
    q4: "componentDidMount"
  }
];

var marks = 0;
var wrong = 0;
for (var k = 0; k < actualObject.length; k++) {
  if (JSON.stringify(actualObject[k]) == JSON.stringify(testData[k])) {
    marks++;
  } else {
    wrong++;
  }
}
console.log(marks, wrong);

实际上我想从每个键中获取值并将其与实际对象进行比较。

【问题讨论】:

  • 你会用“当前输入”和“预期输出”来改写它吗?那么您的代码不包含任何修剪或其他任何内容......
  • 从代码sn -p中的输出来看,只需要修剪测试数据即可。

标签: javascript jquery html json


【解决方案1】:

如果我理解正确,这样的事情应该可以工作:

Object.entries(testData).forEach(function (entry) {
    if (actualObject[entry[0]] === entry[1].trim()) {
        //answers match
    } else {
        //answers don't match
    }
});

如果您需要不分大小写进行比较,请将entry[1].trim() 更改为entry[1].trim().toLowerCase()

编辑: 只是提醒您,也许您应该添加检查测试数据中的值是否为空/未定义,是否为字符串等。

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2022-12-15
    • 1970-01-01
    • 2019-10-05
    • 2018-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多