[英]How do I extract data from a Yahoo Finance JSON using node.js?
[英]How do I get just a new list of numbers from a json array using node.js
鉴于此 json object
{
"contacts": [
{
"name": "Jane doe",
"numbers": [
{
"number": "07123456789"
}
],
"groups": [
{
"group": "Everyone"
},
{
"group": "Exec"
}
]
},
{
"name": "John Smith",
"numbers": [
{
"number": "07987654321"
}
],
"groups": [
{
"group": "Everyone"
}
]
}
]
}
如何返回组等于给定值的新电话号码数组。
因此,例如,我希望有一个“07123456789”数组,其中联系人组=“Exec”
此外,在 Group = "Everyone" 的地方,我希望有 2 个项目的数组:"07123456789" 和 "07987654321"
我试过了:
var data = require('../data/data.json')
var peopleInGroup = data.contacts.filter(function (value) {
value.groups.filter(function (type) {
return type.group === recipients[i];
})
});
收件人是一组“Everyone”、“Exec”、“Overseas”组
在这篇文章之后,我稍微更改了第二个最受好评的答案代码,使其具有:
const getContactsByGroupName = (groupName) => {
return a.contacts
.filter((element) =>
element.groups.some((subElement) => subElement.group === groupName))
.map(element => {
return Object.assign({}, element, { group: element.groups.filter(subElement => subElement.group === groupName) });
});
}
console.log(getContactsByGroupName("Exec"))
这应该可以解决问题。 这里的变量a当然是你的 json object 名称
只需使用 Array 原型方法,以下内容就可以完成您想要的操作:
function filterByGroup(obj, val) {
const objArray = obj.contacts.filter((innerObj, index, array) => {
a = innerObj.groups.filter(group => group.group === val)
return a.length > 0 ? innerObj : false;
});
return (objArray.map(obj => obj.numbers.map( number =>number.number))).flat();
}
然后你可以调用它:
filterByGroup(obj, 'Exec')
其中obj
是您的初始对象!
这是一段创建 JSON 的代码,它具有三组数字:
final_data = {"Everyone": [], "Exec": [], "Overseas": [] }
data.contacts.forEach( (contact) => {
contact.groups.forEach(group => {
final_data[group.group].push(contact.numbers);
})
})
console.log(final_data);
您可以简单地运行每个联系人条目并生成一个输出对象,其中包含每个组的数字 arrays。 这是一个例子。
var input_json = { "contacts": [ { "name": "Jane doe", "numbers": [ { "number": "07123456789" } ], "groups": [ { "group": "Everyone" }, { "group": "Exec" } ] }, { "name": "John Smith", "numbers": [ { "number": "07987654321" } ], "groups": [ { "group": "Everyone" } ] } ] } //define the output objects that will contain the number-arrays by group-key var output = {} //run trough every contact for (let i in input_json.contacts) //run trough every group of current contact for (let j in input_json.contacts[i].groups) //run trough every contact-number for current contact-group for (let k in input_json.contacts[i].numbers) //if group-key already exists in output -> push number in array if (output[input_json.contacts[i].groups[j].group]) output[input_json.contacts[i].groups[j].group].push (input_json.contacts[i].numbers[k].number) //if group-key does not exist -> add new key-array pair else output[input_json.contacts[i].groups[j].group] = [input_json.contacts[i].numbers[k].number] //write output as JSON to document document.write (JSON.stringify (output))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.