我有2个对象数组和2个如果条件
if(JSON.stringify(this.updatedData) !== JSON.stringify(this.originalData) && this.updatedData.length === this.originalData.length) {
this.customAttributes = editedCustomAttributes;
this.customAttributes.forEach(function (element) {
element.action = "edit";
});
}
if (JSON.stringify(this.updatedData) !== JSON.stringify(this.originalData) && his.updatedData.length !== this.originalData.length) {
const items = this.updatedData.filter(item => item.attributeId == null);
items.forEach(function (element) {
element.action = "add";
});
}
编辑网格行时,原始数据
和updatedData
将具有相同的长度,因此第一个if条件执行。当我添加新行时,updatedData
长度将超过原始数据
,因此第二个如果条件执行。
但我有一种情况,用户可以添加一个新行,然后立即编辑一个现有行。在那个特定的场景中,我需要执行if条件,并且我停留在那里。我们将听取任何建议。谢谢
您可以尝试以下方法:
function check() {
const original = JSON.stringify(originalData)
if (originalData.length !== updatedData.length) {
// If lengths are not equal then new rows were added
addedAction()
// Check the two arrays again without those new rows
const newRows = updatedData.length - originalData.length
if (JSON.stringify(updatedData.slice(0, -newRows)) !== original) {
editedAction()
}
} else if (JSON.stringify(updatedData) !== original) {
editedAction()
}
}
addedAction()
和editedAction()
函数正是对编辑或添加的响应。
在执行添加和编辑的情况下,由于长度不同,将首先执行addedAction()
。然后根据updateData
的一部分检查originalData
,如果删除新添加的行后它们不相同,则执行editedAction()
函数。
以下是三种情况的示例:
function check() {
const original = JSON.stringify(originalData)
if (originalData.length !== updatedData.length) {
// If lengths are not equal then new rows were added
addedAction()
// Check the two arrays again without those new rows
const newRows = updatedData.length - originalData.length
if (JSON.stringify(updatedData.slice(0, -newRows)) !== original) {
editedAction()
}
} else if (JSON.stringify(updatedData) !== original) {
editedAction()
}
console.log('')
}
function editedAction() {
console.log('Edited')
}
function addedAction() {
console.log('Added')
}
console.log('First case:')
let originalData = [{ name: 'a' }, { name: 'b' }]
let updatedData = [{ name: 'a' }, { name: 'b' }, { name: 'd' }, { name: 'asd' }]
check()
console.log('Second case:')
originalData = [{ name: 'a' }, { name: 'b' }]
updatedData = [{ name: 'a' }, { name: 'TEST' }]
check()
console.log('Third case:')
originalData = [{ name: 'a' }, { name: 'b' }]
updatedData = [{ name: 'a' }, { name: '123' }, { name: 'test2' }]
check()
.as-console-wrapper { min-height: 100% }
在爪哇中。如果我们必须将一个对象与另一个对象进行比较。我们比较该对象中的每个字段。 学生 1 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。学生 2 对象具有标记 1、标记 2、标记 3、名称、年龄作为字段。因此,要检查2名学生是否相等...我们比较每个字段。 但是,如果 Student 对象有许多字段,该怎么办?学生1对象有标记1,标记2,标记3,名称,年龄,地址,颜色,类,国家,部
问题内容: 我想比较两个JavaScript对象数组,以查看它们是否相同。每个数组中的对象可能不会(并且很可能不会)以相同的顺序排列。每个数组最多只能有10个对象。我以为jQuery可以解决这个问题,但是我在网上找不到很多。 我知道可以使用简单的嵌套解决方案,但是有我不知道的内置函数吗? 谢谢。 问题答案: 有一个简单的方法… 如果以上返回true,则即使元素的顺序不同,两个数组也相同。 注意:仅
创建一个名为“Circle”的Java类来实现Java。io。可串行化接口,并基于半径对圆进行建模。半径不能小于零。实现radius的getter和setter方法。还包括在circle类中重写toString。创建类的比较器,用于比较Circle类型的两个对象。 这就是我目前所拥有的 这是我的比较器类 我的问题是我做得对还是不对?
对于PostgreSQL(v9.5),JSONB格式提供了极好的机会。但现在我只能做一个相对简单的手术; 比较两个jsonb对象;查看一个文档与另一个文档相比有什么不同或缺失。 到目前为止我所拥有的 应该返回第1行与第2行的差异: 相反,它还返回重复项(
使用RestAssured,我试图比较两个JSON对象。 示例:第一个JSON来自excel,我将其作为字符串读取并存储 第二个 JSON 是返回响应对象的响应,该响应对象实际上是一个 JSON 我想将这两者作为JSON对象进行比较,因为当我将响应转换为String并尝试进行比较时,如果JSON模式的顺序发生变化,我的断言就会失败。 我尝试了将字符串转换成JSON的方法,但是没有找到任何方法。有人
问题内容: 我想比较JavaScript代码中2个对象数组。这些对象共有8个属性,但是每个对象都不会有一个值,并且每个数组的大小永远都不能超过8个,因此可能要使用遍历每个对象然后查看对象的值的蛮力方法。 8个属性是执行我想做的最简单的方法,但是在实现之前,我想看看是否有人有一个更优雅的解决方案。有什么想法吗? 问题答案: 编辑:您不能在JavaScript解释器的当前基于浏览器的常见实现中重载运算