我有2个json数组,这是2个http.get请求的结果。 一个包含一个观察列表,如:
json1= [
{“id”:6,”ticker”:”PG”,”gt_lt”:”<“,”price_trigger”:75},
{“id”:8,”ticker”:”T”,”gt_lt”:”<“,”price_trigger”:39.5},
{“id”:9,”ticker”:”WM”,”gt_lt”:”<“,”price_trigger”:60}
];
第二个包含股票定价信息:
json2 = [
{“symbol”:”PG”,”name”:”Procter & Gamble Company (The) “,”lastTradeDate”:null,”lastTradePriceOnly”:88.4,”change”:0.35,”dividendYield”:3.04,”peRatio”:23.93,”volume”:1333524},
{“symbol”:”T”,”name”:”AT&T Inc.”,”lastTradeDate”:null,”lastTradePriceOnly”:39.94,”change”:-0.26,”dividendYield”:4.78,”peRatio”:17.22,”volume”:2865061},
{“symbol”:”WM”,”name”:”Waste Management, Inc. Common S”,”lastTradeDate”:null,”lastTradePriceOnly”:62.98,”change”:0.17,”dividendYield”:2.61,”peRatio”:24.61,”volume”:276554}
];
我希望创建第三个json数组或对象,由第一个数组和第二个数组的所有元素组成,其中“ticker”(json1)==“symbol”(json2)。 这将允许我在新阵列上使用ngFor并将所有必需的信息放入一个列表或表中。任何帮助将不胜感激。
答案 0 :(得分:0)
这是一种做你想做的事情的方法:
let json3 = json1.map(item1 => [item1, json2.find(item2 => item2.symbol === item1.ticker)])
结果是一个由两个元素的子数组组成的数组:项json1
和json2
的关联项。
编辑查找polyfill:
以下是find
方法that I grabbed from MDN的填充:
if (!Array.prototype.find) {
Object.defineProperty(Array.prototype, 'find', {
value: function(predicate) {
'use strict';
if (this == null) {
throw new TypeError('Array.prototype.find called on null or undefined');
}
if (typeof predicate !== 'function') {
throw new TypeError('predicate must be a function');
}
var list = Object(this);
var length = list.length >>> 0;
var thisArg = arguments[1];
var value;
for (var i = 0; i < length; i++) {
value = list[i];
if (predicate.call(thisArg, value, i, list)) {
return value;
}
}
return undefined;
}
});
}
将它放在程序开头的某处。它可以放在浏览器早期加载的脚本文件中。
答案 1 :(得分:0)
你可以这样轻松地做到这一点:
var json3 = [];
json1.forEach(function(v,i){
json2.forEach(function(b,j){
if(b.symbol == v.ticker)
json3.push(Object.assign({},v,b));
});
});