作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
[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}]
关于javascript - 如何仅选择此 jQuery 集合中具有不同键的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094963/
我是一名优秀的程序员,十分优秀!