2016-06-16 11 views
2

だから私はその後、私は機能order(name, amount)を持って配列JavaScript - 配列内の同じ名前の各オブジェクトを印刷しますか?

var items = []; 
items.push({ 
    name: "milk", 
    id: "832480324" 
}); 
    items.push({ 
    name: "milk", 
    id: "6234312" 
}); 
items.push({ 
    name: "potato", 
    id: "983213" 
}); 
    items.push({ 
    name: "milk", 
    id: "131235213" 
}); 

を持っています。私がorder(milk, 2)のように呼び出すと、アイテムの配列にミルク2 ID'sが表示されます。どうすればそれを達成できますか?

+0

あなたの例に3つのIDがある場合、なぜ2つのID(名前は「ミルク」)ですか? –

+2

あなたはどのIDを知っていますか、最初の2、最後の2? – JordanHendrix

+0

私は、数字だけが人によって選択できるわけではありません。彼が3を望んでいるなら、彼は3を選び、それらの3つの異なるidを示します。 1なら1つのIDなど –

答えて

3

は、私がその読みやすさのために好きな機能ES6方法はfilter().map().slice()を使用することですsimple for loop

var items = []; 
 
items.push({ 
 
    name: "milk", 
 
    id: "832480324" 
 
}); 
 
items.push({ 
 
    name: "milk", 
 
    id: "6234312" 
 
}); 
 
items.push({ 
 
    name: "potato", 
 
    id: "983213" 
 
}); 
 
items.push({ 
 
    name: "milk", 
 
    id: "131235213" 
 
}); 
 

 
function order(name, count) { 
 
    var res = []; 
 
    // iterate over elements upto `count` reaches 
 
    // or upto the last array elements 
 
    for (var i = 0; i < items.length && count > 0; i++) { 
 
    // if name value matched push it to the result array 
 
    // and decrement count since one element is found 
 
    if (items[i].name === name) { 
 
     // push the id value of object to the array 
 
     res.push(items[i].id); 
 
     count--; 
 
    } 
 
    } 
 
    // return the id's array 
 
    return res; 
 
} 
 
console.log(order('milk', 2));

0

を使用します(ええ、私は、新しい質問をしなければなりませんでした)

var items = [{name:"milk",id:"832480324"},{name:"milk",id:"6234312"},{name:"potato",id:"983213"},{name:"milk",id:"131235213"}]; 
 

 
function order(name, amount) { 
 
    return items.filter(i => i.name === name) 
 
       .map(i => i.id) 
 
       .slice(0, amount); 
 
} 
 

 
console.log(order('milk', 2));

関連する問題