你如何循环一个对象数组并从每个对象获取一个键? (Angular 2)

时间:2017-04-14 19:48:19

标签: javascript angular foreach ecmascript-6

我有一个对象数组。我需要遍历数组,访问每个对象中的相同键,并将字符串属性与另一个数组进行比较,以查看字符串是否与其共享任何单词。如果有:做某事。

我可以使用Lodash _.difference方法成功地将我拥有的数组与硬编码字符串进行比较。但我很困惑如何使用循环从每个对象的键获取字符串。我试过forEach,但我似乎无法获得每个元素的键。

实现这一目标的最佳方法是什么?

非常感谢。

组件

import { Component, OnInit, NgZone, ViewChild } from '@angular/core';
import { RouterModule, Router } from "@angular/router";
import { NewsApiService } from '../service/news-api.service';
import { Http, Response } from '@angular/http';
import { MapComponent } from '../map/map.component';

import * as _ from "lodash";

@Component({
  selector: 'app-main',
  templateUrl: './main.component.html',
  styleUrls: ['./main.component.css']
})
export class MainComponent implements OnInit {

  private bbcJSON: any;
  private alJazeeraJSON: any;
  private bingWorldJSON: any;
  private bingPoliticsJSON: any;




  share(event) {
      this.bbcJSON.forEach(function(element) {
        console.log(element.description);
      })
}

控制台出错:内联模板:0:0引起:无法读取未定义的属性'forEach'

2 个答案:

答案 0 :(得分:1)

假设您有一个对象数组,一个字符串数组,并且您正在使用underscore.js。

这是我试图解释你的问题的例子。我假设您正在寻找关键字a:

的交叉点
var arObj = [ { a: "a", b: "b" }, { a: "c", b: "d" } ];
var compareArray = [ "c", "d" ];

var sharedWords = _.intersection(_.pluck(arObj, "a"), compareArray);

要回答标题问题 - 如果您使用下划线,则可以执行_.pluck(array_of_objects, key )来获取值的数组。

答案 1 :(得分:0)

这样的东西?



const ref = ["foo", "baz"];

const arr = [
  { name: "foo" },
  { name: "bar" },
  { name: "baz" }
];

for (const obj of arr) {
  if (ref.includes(obj.name)) {
    console.log(`Do something with ${obj.name}...`);
  }
}