Javascript / AngularJs - 如何用另一个数组中的对象填充数组?

时间:2016-05-14 17:31:33

标签: javascript arrays angularjs

我正在尝试在我正在制作的angularjs应用程序中做的事情。我有一大堆电影演员,包括导演,制片人,电影摄制组等。我想制作一个新的导演组合。

我不知道如何用另一个数组中的特定对象填充新数组。 这是我的意思的一个简单例子:

this.products = [
  {name: "apple", category: "fruit"}, 
  {name: "iPhone", category: "tech"}, 
  {name: "banana", category: "fruit"}
];

this.fruits = [];

for(i = 0; i < products.length; i++) {
  if (products.category[i] == "fruit") {
    /*code to add object to fruits array*/
 }
}

请帮忙!谢谢!

4 个答案:

答案 0 :(得分:1)

试试这个:

while(t1!=NULL)
 {
  count++;
  t1=t1->ptr;
 }
 for(i=0;i<count;i++)
  {
   t1=START;
   for(j=0;j<count-i-1;j++)
    {
      if(t1->info>(t1->ptr)->info)
       {
 int temp=t1->info;
 t1->info=(t1->ptr)->info;
 (t1->ptr)->info=temp;
       }
       t1=t1->ptr;
    }
  }

答案 1 :(得分:1)

尝试使用此代码可能对您有所帮助

this.products = [
    {name: "apple", category: "fruit"}, 
    {name: "iPhone", category: "tech"}, 
    {name: "banana", category: "fruit"}
];

this.fruits = [];

for(i = 0; i < products.length; i++) {
    if (products[i].category === "fruit") {
        /*code to add object to fruits array*/

        fruits.push(products[i].name);
    }
}

console.log(fruits);

答案 2 :(得分:0)

使用filter API:

this.fruits = this.products.filter(function(product) {
                  return product.category == 'fruits';
              });

答案 3 :(得分:0)

您可以按照以下方式执行此操作:

this.fruits = this.products.filter(p => p.category == "fruit").map(p => p.name);

.filter()方法仅采用具有正确类别的对象。然后.map()遍历此结果,并仅使用name属性值替换对象,以便最终结果为["apple", "banana"]

如果您想要整个对象,那么当然您会遗漏.map()部分。

演示:

new (function () {
    this.products = [
      {name: "apple", category: "fruit"}, 
      {name: "iPhone", category: "tech"}, 
      {name: "banana", category: "fruit"}
    ];

    this.fruits = this.products.filter(p => p.category == "fruit").map(p => p.name);

    document.write(this.fruits);
});