从与特定参数

时间:2017-07-17 18:03:22

标签: javascript jquery arrays loops object

所以我有一个包含多个对象的二维数组。每个对象都有多个属性和方法。我想只返回具有匹配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;
&#13;
&#13;

3 个答案:

答案 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和任何列表的通用函数。
类似于:

&#13;
&#13;
    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;
&#13;
&#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