gpt4 book ai didi

javascript - 如何仅选择此 jQuery 集合中具有不同键的对象?

转载 作者:行者123 更新时间:2023-11-28 07:13:15 25 4
gpt4 key购买 nike

[Object, Object, Object, prevObject: jQuery.fn.init[3], context: undefined]
0: Object
1: 1
2: 2
3: 7
__proto__: Object
1 : Object
1: 6
2: 2
3: 5
6: 15
__proto__: Object
2 : Object
1: 3
2: 2
3: 5
5: 7
__proto__: Object
context: undefined
length: 3
prevObject: jQuery.fn.init[3]
__proto__: jQuery[0]

您会注意到每个对象都有相同的以下键:1,2,3

但是第二个对象有一个键:6,第三个对象有一个键:5

我需要选择这些键(或键/值对)。

我怎样才能做到这一点?如果有好的库,我愿意使用。

最佳答案

在我看来,您使用 JQuery 的方式是错误的。你的 JQuery 对象中应该有 DOM 对象,如果你查看 JQuery 对象中的 context 属性,它会显示未定义..

除此之外,要按键和值相等进行过滤,我建议执行以下操作:

var yourCollection = [{1:1, 2:2, 3:7}, 
{1:6, 2:2, 3:5, 6:15},
{1:3, 2:2, 3:5, 5:7}];
yourCollection.forEach(function(item){
Object.keys(item).forEach(function(property){
if(parseInt(property, 10) % item[property] === 0){
delete item[property];
}
})
})

输出为:

[[object Object] {
3: 7
}, [object Object] {
1: 6,
3: 5,
6: 15
}, [object Object] {
1: 3,
3: 5,
5: 7
}]

编辑:通过对称差异过滤集合。您说您同意使用库,所以我建议使用 lodash(实用程序库)。

var yourCollection = [{1:1, 2:2, 3:7}, 
{1:6, 2:2, 3:5, 6:15},
{1:3, 2:2, 3:5, 5:7}];


var keyMap = _.map(yourCollection, function(item){
return _.map(Object.keys(item), function(property){
return parseInt(property, 10);
})
})

var reducedKeyMap = _.xor(_.flatten(_.initial(keyMap)), _.last(keyMap));

var symmetricDifference = [];
symmetricDifference = _.reduce(yourCollection, function(result, next, index, collection){
var substrat = _.pick(next, reducedKeyMap);
if(!_.isEmpty(substrat)){
result.push(substrat);
}
return result;
}, [])

document.write(JSON.stringify(symmetricDifference));

输出是:

[{"6":15},{"5":7}]

Running example

关于javascript - 如何仅选择此 jQuery 集合中具有不同键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094963/

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