簡體   English   中英

如何在數組中查找元素

[英]How to find element in array

我是javascript的新手,我有一個對象數組。

var cart = [
  { id: 1, price: 2 },
  { id: 2, price: 1 }
];

我正在使用for循環來查找ID:

for (var i = 0; i < cart.length; i++) {
  if (cart[i].id === id) {
    return cart[i]
  }
}

return null;

我知道有像find()這樣的函數,但是我不太清楚如何使用它。 有人可以幫忙嗎?

使用find ,您可能需要babel ,但只需要您需要的代碼:

ES6

const id = 1;
const found = cart.find(item => item.id === id)

Vanilla

var id = 1;
var found = cart.find(function(item) {return item.id === id})

find需要一個函數(在我們的例子中使用es6 : () => {}是一個匿名函數),並將它應用於列表中的每個項目,直到找到第一個匹配項,它是如何知道它是匹配的:一旦你的函數返回true,它就會切斷循環,並返回該項。

然而

另一個選項,它不使用find但可能比傳統的for循環更具可讀性:

var id = 1;
for(var item in cart) {
  if(item.id == id) {
    return item;
  }
}
return null

還有一些庫可以幫助你以不同的方式實現這一點,例如: underscore.jslodash ,我不會介紹,但你可以看看你是否真的感興趣。

你是對的。 有一個名為find的函數。 您可以設置回調函數以與find一起使用,甚至可以將其設置為接受參數(例如id ):

 var cart = [{ id: 1, price: 2 }, { id: 2, price: 1 }]; function byID(id) { return function(element) { return element.id == id; } } var item = cart.find(byID(2)); console.log(item); 

對於這樣的問題,我非常感謝圖書館lodash 它允許你做這樣的事情:

 var cart = [{id: 1, price: 5}, {id: 2, price: 6}]; var item = _.find(cart, {id:2}); console.log(item); 
 <script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM