所以我有一个包含多个对象的二维数组。每个对象都有多个属性和方法。我想只返回具有匹配id的对象方法和属性与我传递它的内容。在这种情况下,id为1。
const blogData = [
{
title : "Title 1",
date : "2017-07-15",
id : 1
},
{
title : "Title 2",
data : "2017-07-16",
id : 2
}
];
for (let i = 0; i < blogData.length; i++) {
if (blogData[i].id === 1) {
console.log(`Post #${blogData[i].id} loaded`);
}
}
&#13;
答案 0 :(得分:2)
您可以根据ID过滤数组,假设您只有一次点击,您可以返回第一个(且仅限)项,或者跳过shift()
并获取一个数组匹配。
const blogData = [{
title: "Title 1",
date: "2017-07-15",
id: 1
},
{
title: "Title 2",
data: "2017-07-16",
id: 2
}
];
var result = blogData.filter( x => x.id === 1).shift();
console.log(result)
答案 1 :(得分:0)
您可以使用适用于任何ID
和任何列表的通用函数。
类似于:
const blogData = [
{
title : "Title 1",
date : "2017-07-15",
id : 1
},
{
title : "Title 2",
data : "2017-07-16",
id : 2
}
];
function getData(id, arr, callback){
$.each(arr, function(key, value){
if(value.id === id)
callback(value); //Just using a simple callback for console purposes
});
}
$(document).ready(function(){
getData(1, blogData, function(c){
console.log(c); //loggin the callback
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
答案 2 :(得分:0)
在您的情况下,这是[2, 1]
个对象,而不是2维数组,因此您可以使用Array.prototype.filter()
方法仅过滤具有array
的{{1}} :
object
<强>演示:强>
id=1
使用var res = blogData.filter(function(obj){
return obj.id === searchedId;
}).shift();
循环的方法,如果条件匹配,则只需返回右const blogData = [
{
title : "Title 1",
date : "2017-07-15",
id : 1
},
{
title : "Title 2",
data : "2017-07-16",
id : 2
}
];
var searchedId = 1;
var res = blogData.filter(function(obj){
return obj.id === searchedId;
}).shift();
console.log(res);
:
foor