减少 javascript 个对象
Reduce javascript object
我有这个 javascript 对象 :
{
{
long_name: "10",
types: [
0: "street_number"
],
},
{
long_name: "street",
types: [
0: "route"
],
},
{
long_name: "Paris",
types: [
0: "locality"
],
},
...
}
我想把它压平并得到类似的东西:
{
street_number: "10",
route: "street",
locality: "Paris",
...
}
我正在使用 ES6,但无法将它扁平化这么多,
我所做的就是拥有 :
{
{street_number: "10"},
{route: "street"},
{locality: "Paris"},
...
}
这是我试过的:
const flattenedObject = originalObject.map(flatten);
...
function flatten(element) {
let obj = {};
obj[element.types[0]] = element.long_name;
return obj;
}
感谢您的帮助。
您可以使用 Array#reduce
with a computed property 和数组中的第一个元素。
关键功能是 Object.assign
用于向结果对象添加属性。
The Object.assign()
method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.
var data = [{ long_name: "10", types: ["street_number"], }, { long_name: "street", types: ["route"], }, { long_name: "Paris", types: ["locality"], }],
object = data.reduce((r, a) => Object.assign(r, { [a.types[0]]: a.long_name }), {});
console.log(object);
All I've succeeded to do is having:
{
{street_number: "10"},
{route: "street"},
{locality: "Paris"},
...
}
我不知道你 "succeeded" 是怎么得到的,因为 JS 中不存在这种对象(你的原始对象也不存在)。你的意思是在它周围放置 []
而不是 {}
(换句话说,它是一个小对象数组)吗?如果是,则结合
Object.assign({}, ...littleObjects)
顺便说一句,如果你愿意,你可以称它为 "flattening",但这会让人感到困惑,因为它与人们通常所说的 "flattening"(意思是折叠嵌套数组)完全不同).
我有这个 javascript 对象 :
{
{
long_name: "10",
types: [
0: "street_number"
],
},
{
long_name: "street",
types: [
0: "route"
],
},
{
long_name: "Paris",
types: [
0: "locality"
],
},
...
}
我想把它压平并得到类似的东西:
{
street_number: "10",
route: "street",
locality: "Paris",
...
}
我正在使用 ES6,但无法将它扁平化这么多, 我所做的就是拥有 :
{
{street_number: "10"},
{route: "street"},
{locality: "Paris"},
...
}
这是我试过的:
const flattenedObject = originalObject.map(flatten);
...
function flatten(element) {
let obj = {};
obj[element.types[0]] = element.long_name;
return obj;
}
感谢您的帮助。
您可以使用 Array#reduce
with a computed property 和数组中的第一个元素。
关键功能是 Object.assign
用于向结果对象添加属性。
The
Object.assign()
method is used to copy the values of all enumerable own properties from one or more source objects to a target object. It will return the target object.
var data = [{ long_name: "10", types: ["street_number"], }, { long_name: "street", types: ["route"], }, { long_name: "Paris", types: ["locality"], }],
object = data.reduce((r, a) => Object.assign(r, { [a.types[0]]: a.long_name }), {});
console.log(object);
All I've succeeded to do is having:
{
{street_number: "10"},
{route: "street"},
{locality: "Paris"},
...
}
我不知道你 "succeeded" 是怎么得到的,因为 JS 中不存在这种对象(你的原始对象也不存在)。你的意思是在它周围放置 []
而不是 {}
(换句话说,它是一个小对象数组)吗?如果是,则结合
Object.assign({}, ...littleObjects)
顺便说一句,如果你愿意,你可以称它为 "flattening",但这会让人感到困惑,因为它与人们通常所说的 "flattening"(意思是折叠嵌套数组)完全不同).