我有一个对象数组。每个对象都有两个字段“类型”和“位置”。我想知道是否有任何对象(在此数组中)具有相同的“类型”和“位置”(并得到它)。我怎么知道呢?我知道如何过滤数组,但是如何与其他对象进行比较?
var array = forms.filter(function (obj) {
return obj.type === 100
});
答案 0 :(得分:1)
您可以使用Map
,对相同类型/位置的对象进行分组,并对分组结果进行长度大于一的分组。
ObservableList<BooleanProperty> list = propertiesList.stream()
.map(pane -> pane.changeProperty())
.collect(Collectors.toCollection(() -> FXCollections.observableArrayList()));
BooleanBinding change = Bindings.createBooleanBinding(() -> true, list);
Button button = (Button) dialogPane.lookupButton(okButtonType);
button.disableProperty().bind(change.not());
答案 1 :(得分:1)
这是另一种方法:
const data = [
{ type: 'a', position: 1 },
{ type: 'b', position: 1 },
{ type: 'a', position: 1 },
{ type: 'a', position: 2 },
{ type: 'b', position: 2 },
{ type: 'c', position: 1 },
{ type: 'c', position: 1 }
]
const duplicates = data =>
data.reduce((prev, el, index) => {
const key = JSON.stringify({ p: el.position, t: el.type })
prev[key] = prev[key] || []
prev[key].push(el)
if (index === data.length - 1) {
return Object.values(prev).filter(dups => dups.length > 1)
}
return prev
}, {})
console.log(duplicates(data))