gpt4 book ai didi

javascript - 如何使用 jquery 或 javascript 重新定位 JSON 中对象的键

转载 作者:行者123 更新时间:2023-12-03 04:45:11 24 4
gpt4 key购买 nike

我有两个需要比较的对象。但是对象中键的位置存在问题。

var obj1 = [{
Name : abc;
age : 23;
}, {
Name : def;
age : 222;
}]

var obj2 = [{
age : 23;
Name: abc;
}, {
age : 222;
Name : def;
}]

我尝试过使用以下方法,但失败了。

(JSON.stringify(obj1) == JSON.stringify(obj2))

有没有办法交换对象中迭代整个对象的键的位置?我期待这样的事情

var obj1 = [{
Name : abc;
age : 23;
}, {
Name : def;
age : 222;
}]

var obj2 = [{
Name : abc;
age : 23;
}, {
Name : def;
age : 222;
}]

最佳答案

对象的键(无序)与数组的索引(有序)不同。要比较两个对象数组并查看它们的每个数组元素中是否具有相同的对象(具有相同的键/值对),您可以尝试以下操作:

function compareArrayOfObjects(array1, array2) {
return array1.reduce(function(bool, obj, index) {
return bool && array2[index] && isEqual(obj, array2[index]);
}, array1.length === array2.length);
}

如果您只需要比较像数字和字符串这样简单的值,您可以实现 isEqual(),如下所示:

function isEqual(a, b) {
var aKeys = Object.getOwnPropertyNames(a);
var bKeys = Object.getOwnPropertyNames(b);

return aKeys.reduce(function(bool, aKey) {
return bool && (a[aKey] === b[aKey]);
}, aKeys.length === bKeys.length);
}

如果您需要深度对象比较,那么您可能需要 _.isEqual() 的 LoDash 实现。

将它们放在一起,您将拥有

    var obj1 = [{
Name: 'abc',
age: 23
}, {
Name: 'def',
age: 222
}];

var obj2 = [{
age: 23,
Name: 'abc'
}, {
age: 222,
Name: 'def'
}];
var obj3 = [{}, {}];

function compareArrayOfObjects(array1, array2) {
return array1.reduce(function(bool, obj, index) {
return bool && array2[index] && isEqual(obj, array2[index]);
}, array1.length === array2.length);
}

function isEqual(a, b) {
var aKeys = Object.getOwnPropertyNames(a);
var bKeys = Object.getOwnPropertyNames(b);

return aKeys.reduce(function(bool, aKey) {
return bool && (a[aKey] === b[aKey]);
}, aKeys.length === bKeys.length);
}
console.log('obj1 and obj2 is the same (expected true): ' + compareArrayOfObjects(obj1, obj2));
console.log('obj1 and obj3 is the same (expected false): ' + compareArrayOfObjects(obj1, obj3));

关于javascript - 如何使用 jquery 或 javascript 重新定位 JSON 中对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com