我有一个对象数组。我需要遍历数组,访问每个对象中的相同键,并将字符串属性与另一个数组进行比较,以查看字符串是否与其共享任何单词。如果有:做某事。
我可以使用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'
答案 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}...`);
}
}