我有以下数据:
vpaths {
["Headers"] = { "**.h", "**.hpp" },
["Sources/*"] = {"**.c", "**.cpp"},
["Docs"] = "**.md"
}
这会返回var data = [{
County: "Cork",
date: '1/1/2018',
num: 100
}, {
County: "Roscommon",
date: '07/10/2017',
num: 27
}];
var Counties = {};
for (County in data) {
for (var i = 0; i <= 1; i++) {
Counties[data[i].County] = data[i].County;
}
}
如何让我的代码返回数组对象中的每个县,以便最终得到:
{County: "Roscommon"}
答案 0 :(得分:4)
您可以使用array#map
。您可以使用array#map
迭代您的数组,并在其回调函数中,您可以使用对象解构语法来获取County
值,并使用对象的简写符号创建具有{{1}的对象}值。
County
答案 1 :(得分:1)
您可以使用数组#map函数。
const countyArray = data.map(el => {el.County})
或
const counties = [];
for (let county of data) {
counties.push({ County })
}
作为对象:
const counties = {};
for (let element of data) {
counties[element.County] = {County: element.County};
}
答案 2 :(得分:1)
var data = [{
County: "Cork",
date:'1/1/2018',
num:100
},{
County: "Roscommon",
date: '07/10/2017',
num:27
}];
var Counties=data.map(function(a){return {County:a.County}});
console.log(Counties);
或者这是一个只有县名的数组?
var data = [{
County: "Cork",
date:'1/1/2018',
num:100
},{
County: "Roscommon",
date: '07/10/2017',
num:27
}];
var Counties=data.map(function(a){return a.County});
console.log(Counties);
对于数组中的简单数据映射,我建议您深入研究map的功能,这样可以很容易地“清理”数组中的数据,以便以您想要的格式挑选和选择所需的花絮。 / p>
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
如果您需要唯一值,则需要执行几个额外步骤
var data = [{
County: "Cork",
date:'1/1/2018',
num:100
},{
County: "Roscommon",
date: '07/10/2017',
num:27
},
{
County: "Roscommon",
date: '17/10/2017',
num:34
}
];
console.log("#nofilter");
var counties=data.map(function(a){
return a.County
});
console.log(counties);
console.log("as filtered array");
var counties=data.map(function(a){
return a.County;
})
.filter(function(value, index, self) {
return self.indexOf(value) === index;
});
console.log(counties);
console.log("as filtered objects");
var counties=data.map(function(a){return a.County})
.filter(function(value, index, self) {
return self.indexOf(value) === index;
})
.map(function(a) {
return {County: a}
});
console.log(counties);
答案 3 :(得分:1)
您的代码存在一些问题,让我们分析一下:
您的方法:
var Counties={};
for (County in data){
for (var i=0;i<=1;i++){
Counties["County"]=data[i].County;
}
}
这里没有很好地使用关键字in
,因为该运算符会返回数组data
中每个项目的索引
for (County in data)
^
您不需要那个内部for-loop
,因为您可以直接迭代data
数组: - )
for (County in data){
for (var i=0;i<=1;i++){ // Remove that line
^
正如您在问题中所述,您所需的输出是一组对象。所以你需要声明一个数组。
var Counties={};
^
查看此代码段,它更干净并遵循您的逻辑:
var data = [{
County: "Cork",
date: '1/1/2018',
num: 100
}, {
County: "Roscommon",
date: '07/10/2017',
num: 27
}];
var array = [];
for (c in data) {
array.push({"County": data[c].County});
}
console.log(array);
看?,你的逻辑现在正在运作!
使用reduce
功能的简短方法是:
reduce
不会修改原始对象。
var data = [{
County: "Cork",
date: '1/1/2018',
num: 100
}, {
County: "Roscommon",
date: '07/10/2017',
num: 27
}];
var counties = data.reduce((a, c) => {
return [...a, ...[{"county": c.County}]]
}, []);
console.log(JSON.stringify(data));
console.log(JSON.stringify(counties));
参见?,你的原始Obj没有被修改,并且创建了一个带有县的新数组。
使用map
功能的另一种简短方法是:
map
不会修改原始对象。
var data = [{
County: "Cork",
date: '1/1/2018',
num: 100
}, {
County: "Roscommon",
date: '07/10/2017',
num: 27
}];
var counties = data.map((c) => ({"county": c.County}));
console.log(JSON.stringify(data));
console.log(JSON.stringify(counties));
参见?,你的原始Obj没有被修改,并且创建了一个带有县的新数组。
答案 4 :(得分:0)
可能最好的选择是像这样映射数据数组。 `
<li class="post-120 product type-product status-publish has-post-thumbnail
category1 category2 category3 category4 pa_one pa_two...">
`