2017-05-31 36 views
0

我正在使用Angular 2與Typescript。如何在Javascript對象數組中進行搜索?

我有一個看起來像這樣的對象數組;

lists: any [] = [ 
{title: 'Title1', content: 'Content1', id: 10}, 
{title: 'Title2', content: 'Content2', id: 13}, 
{title: 'Title3', content: 'Content3', id: 14}, 
{title: 'Title4', content: 'Content4', id: 16}, 
]; 

所有我想要做的是,我需要在數組中找到一個特定的ID後返回true或false值。

我找到了一個字符串示例如下。

myFunction() { 
var fruits = ["Banana", "Orange", "Apple", "Mango"]; 
var a = fruits.indexOf("Apple"); 
var d = a >= 0 ? true : false 
console.log(d); 
} 

但是,當我在我的情況中應用這個,它沒有工作。

+0

請告訴我們你的邏輯陣列中搜索對象。 –

回答

1

Array#find方法嘗試

var a= [ 
 
{title: 'Title1', content: 'Content1', id: 10}, 
 
{title: 'Title2', content: 'Content2', id: 13}, 
 
{title: 'Title3', content: 'Content3', id: 14}, 
 
{title: 'Title4', content: 'Content4', id: 16}, 
 
]; 
 

 
function check(id){ 
 
return a.find(a=> a.id == id) ? true : false; 
 
} 
 

 
console.log(check(10)) 
 
console.log(check(105))

1

您可以使用some

let containsId => id => item => item.id === id; 
let isIdInList = lists.some(containsId(10)); 
0

最簡單的解決辦法是通過列表數組進行迭代,並檢查是否object.id等於所請求的ID。

checkID(id: number){ 
    for(var i = 0; i < lists.length; i++) { 
    if(lists[i].id == id){ 
    return true; 
    } 
    else{ 
     return false; 
    } 
    } 
} 
0

下面的代碼將返回true如果particularId列表false另有發現。

const foundObjects = lists.filter(obj => obj.id == particularId) 
return !foundObjects || foundObjects.length === 0 
0

你可以使用一些,它將返回true,如果確認至少一個情況是真實的。 嘗試是這樣的:

let myArray = [ 
{title: 'Title1', content: 'Content1', id: 10}, 
{title: 'Title2', content: 'Content2', id: 13}, 
{title: 'Title3', content: 'Content3', id: 14}, 
{title: 'Title4', content: 'Content4', id: 16}, 
] 

myArray.some(function(el){ return (el.id === 10) ? true:false }) 
相關問題