我得到一个包含许多参数的数据数组。例如,数据数组采用以下格式:
MATCH (d:Destination)-[:Hosts]-(a:Accomodation)
WHERE d.name = 'some name'
RETURN DISTINCT labels(a), collect(a.name)
我希望将上面的数组简化为以下格式:
var data = [
{
"name":"pradeep",
"age": "32",
"location": "Bangalore"
},
{
"name":"praveen",
"age": "30",
"location": "Mangalore"
},
{
"name":"Ajay",
"age": "32",
"location": "Hubli"
}
]
如何使用Underscore完成此操作。我尝试使用_.pluck但它只获取数据而不是键。
答案 0 :(得分:1)
你可以使用纯JavaScript来实现它,一种方法是:
data.map(function(obj) {
return {'name': obj.name};
})
如果您想参数化应保留的键,您可以编写如下函数:
function filterByKey(arr, key) {
return arr.map(function(obj) {
var newObj = {};
newObj[key] = obj[key];
return newObj;
});
}
并使用它:
var newData = filterByKey(data, 'name');
干杯
答案 1 :(得分:0)
对于严格的下划线JS方法,您可以将_.map
与_.pick
结合使用:
var newData = _.map(data, function(d) { return _.pick(d, 'name' })
然而,使用_.pick
效率不如仅仅在{ name: d.name }
回调中返回_.map
那么高效。
答案 2 :(得分:0)
Underscore不是真的需要,你可以这样做..
var newData = data.map(function (x) {
return { name: x.name };
});
但如果你真的想使用下划线,那就是这样:
var newData = _.map(data, function (x) {
return { name: x.name };
});
答案 3 :(得分:0)
在原生JavaScript中,您可以这样做:
var data = [{
"name": "pradeep",
"age": "32",
"location": "Bangalore"
}, {
"name": "praveen",
"age": "30",
"location": "Mangalore"
}, {
"name": "Ajay",
"age": "32",
"location": "Hubli"
}];
var newData = data.map(function(d) {
return { name: d.name }
});
console.log(newData)
答案 4 :(得分:0)
您需要使用Undescore中的map功能。它是函数式编程中非常流行的实用程序,您也可以在浏览器中原生使用它。
使用Underscore.js,代码如下所示:
_.map(data, function(element) {
return {name: element['name']};
})
答案 5 :(得分:0)
您可以使用原生JavaScript
来完成var result = [];
data.forEach(function(d){
result.push({'name': d.name}) // d is an iterator
})
您可以使用map函数返回键值对
var result = data.map(function(d){
return {'name': d.name}
})