我如何从JavaScript中的2对象中获得公共项目
How do I get common items from 2 object in JavaScript?
我有两个这样的对象数组:
数组1
[{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"},]
数组2
[{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}]
我如何找出数组1中的哪个ids
具有基于数组2的贡献关系类型,即贡献=="yes"?
结果应该是这样的:
结果1[{"id":1}, {"id":3}]
或者更进一步,只返回贡献关系的数量
结果2
contributingRelationship = 2
您可以像这样将.filter()
与.some()
和.map()
组合使用。
如果arr2
特别大,您可以首先计算贡献类型,并将它们保存在映射中,以便在过滤arr1
时更快地检索。
var arr1 = [{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"}];
var arr2 = [{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}];
var contributing = arr1.filter(function(item) {
// filter based on whether arr2 has corresponding item
return arr2.some(function(other_item) {
return other_item.relationship_type_id == item.relationship_type_id && other_item.contributing == "yes";
});
}).map(function(item) {
// map into final representation
return {
id: item.id
};
});
console.log(contributing);
这样如何:
(function(){
var contributingIds = [];
var result = [];
var arr = [
{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"}
];
var arr2 = [
{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}
];
arr2.forEach(function(item){
if(item.contributing === 'yes'){
contributingIds.push(item.relationship_type_id);
}
});
arr.forEach(function(item){
if(contributingIds.indexOf(parseInt(item.relationship_type_id, 10)) >= 0){
result.push(item.id);
}
});
console.log(result);
})();
你可以这样做:
var idarray = [{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"},];
var relarray = [{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}];
var resultArray = [];
for (var counter=0; counter < idarray.length; counter++) {
for (var relarrayCounter =0; relarrayCounter < relarray.length; relarrayCounter++) {
if(idarray[counter].relationship_type_id== relarray[relarrayCounter].relationship_type_id) {
if (relarray[relarrayCounter].contributing == "yes") {
var resultObj = {};
resultObj.id = idarray[counter].relationship_type_id;
resultArray.push(resultObj);
}
}
}
}
console.log("Result =", resultArray);
console.log("Contributing relationship = ", resultArray.length);
这应该也可以。
var a = [{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"},];
var b = [{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}];
var arr = [];
for(var i=0;i<b.length;i++)
for(var j=0;j<a.length;j++){
if(b[i].contributing == "yes" && a[j].relationship_type_id == b[i].relationship_type_id){
arr.push({"id" : a[i].id});
}
}
console.log(JSON.stringify(arr));
小提琴。
我使用了两个简单的foreach循环来遍历每组哈希值,查找指定的输入id。我希望它对你有用。
// initialize the arrays
var id_to_relation = [{"id":1,"relationship_type_id":"3"},
{"id":2,"relationship_type_id":"2"},
{"id":3,"relationship_type_id":"1"}]
var relation_to_contribute = [{"relationship_type_id":1,"contributing":"yes"},
{"relationship_type_id":2,"contributing":"no"},
{"relationship_type_id":3,"contributing":"yes"}]
window.getRelation = function(id)
{
var type = []; // initialize relationship_type_id holder
var contributing = 0; // current count of contributing ids
for (var hash in id_to_relation)
{
if (id_to_relation[hash]["id"] == id)
{
type.push(parseInt(id_to_relation[hash]["relationship_type_id"])); // grab the related types
}
}
for (var hash in relation_to_contribute)
{
if (type.indexOf(relation_to_contribute[hash]["relationship_type_id"]) > -1)
{
contributing += relation_to_contribute[hash]["contributing"] == "yes" ? 1 : 0;
}
}
document.getElementById("result").innerHTML = "contributingRelationship = " + contributing;
}
Enter requested id: <input type="number" id="thisId" />
<br>
<button type="button" onclick="getRelation(document.getElementById('thisId').value)">
Check id
</button>
<h1>Result</h1>
<p id="result"></p>
相关文章:
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 原始javascript将json对象中的项目打印到列表中的屏幕上
- 如何通过迭代对象数组来删除某些项目
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- M项目2:是否可以从DOM对象中获取M视图
- 范围$手表项目doens'不适用于javascript对象的字段
- 从jQuery数组或元素的对象列表中选择第N个项目
- AngularJS ForEach将新项目推送到对象中
- 如何删除localStorage中的特定项目/对象
- Javascript 如何将项目推送到存储在对象中的数组中
- 在单击选项卡式项目时隐藏和创建另一个对象 - HTML CSS
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- JS深度比较2个对象并删除在第二个对象中找到的项目,而不是第一个
- 对对象数组中的项目进行分组和排序
- JavaScript 将项目添加到对象的开头
- Javascript -项目对象数组
- 删除项目对象javascript
- 如何使用AJAX显示/打印从数据库中获取的每个项目/对象的属性名称