如何使用对象条目创建对象数组?
How can i create an array of objects with the object entries?
我想从 this.props.data 创建一个对象数组,试图这样做我无法让地图放置通常由 object.entries 生成的键值。
我有一个包含代码的屏幕截图,以及一些控制台日志和它们显示的结果而不是 {_key:"0"},我希望它是 {numberOfElements:"12"}。
谢谢
这是代码中有问题的部分
import React, { Component } from 'react';
export default class DataTable extends Component{
render(){
const data= Object.entries(this.props.data).map((_key,_value)=>({
_key:String(_value)
}));
console.log(data)
console.log(Object.entried(this.props.data))
return <div></div>
}
}
控制台输出:
你应该像这样组成一个对象:
let object = {}; object[_key] = String(_value); return object;
好的,如果您想要一个对象数组,每个对象代表一对 key/value 原始对象,这将为您解决问题:
original = {
x : 2,
y : 3,
}
mapped = Object.entries(original).map(([_key, _value]) => ({[_key]: String(_value)}));
console.log(mapped);
如果您需要一个具有相同 key/value 的新对象,但映射了值(例如 String()
),那么这应该适合您:
original = {
x: 2,
y: 3,
};
mapped = Object.entries(original)
.reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }),
{});
console.log(mapped);
如果您需要映射对象但在数组中,那么,将其放在数组中:
original = {
x: 2,
y: 3,
}
mappedInArray = [
Object.entries(original).reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }), {})];
console.log(mappedInArray);
另外,一般来说,请注意您正在这样做:
Object.entries(obj).map((_key, _value) => ...);
这是错误的,因为条目是一个成对列表(长度为 2 的数组,第一项是键,第二项是值),映射后将转到您的 _key
参数,因此您的 _value
参数将只是条目数组中 key-value 对的索引。即你会得到:
_key = [<first-key>, <first-value>]; _value = 0;
_key = [<second-key>, <second-value>]; _value = 1;
...
你应该这样写:
Object.entries(obj).map(([_key, _value]) => ...);
我想从 this.props.data 创建一个对象数组,试图这样做我无法让地图放置通常由 object.entries 生成的键值。
我有一个包含代码的屏幕截图,以及一些控制台日志和它们显示的结果而不是 {_key:"0"},我希望它是 {numberOfElements:"12"}。 谢谢
这是代码中有问题的部分
import React, { Component } from 'react';
export default class DataTable extends Component{
render(){
const data= Object.entries(this.props.data).map((_key,_value)=>({
_key:String(_value)
}));
console.log(data)
console.log(Object.entried(this.props.data))
return <div></div>
}
}
控制台输出:
你应该像这样组成一个对象:
let object = {}; object[_key] = String(_value); return object;
好的,如果您想要一个对象数组,每个对象代表一对 key/value 原始对象,这将为您解决问题:
original = {
x : 2,
y : 3,
}
mapped = Object.entries(original).map(([_key, _value]) => ({[_key]: String(_value)}));
console.log(mapped);
如果您需要一个具有相同 key/value 的新对象,但映射了值(例如 String()
),那么这应该适合您:
original = {
x: 2,
y: 3,
};
mapped = Object.entries(original)
.reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }),
{});
console.log(mapped);
如果您需要映射对象但在数组中,那么,将其放在数组中:
original = {
x: 2,
y: 3,
}
mappedInArray = [
Object.entries(original).reduce((obj, [_key, _value]) =>
Object.assign(obj, { [_key]: String(_value) }), {})];
console.log(mappedInArray);
另外,一般来说,请注意您正在这样做:
Object.entries(obj).map((_key, _value) => ...);
这是错误的,因为条目是一个成对列表(长度为 2 的数组,第一项是键,第二项是值),映射后将转到您的 _key
参数,因此您的 _value
参数将只是条目数组中 key-value 对的索引。即你会得到:
_key = [<first-key>, <first-value>]; _value = 0;
_key = [<second-key>, <second-value>]; _value = 1;
...
你应该这样写:
Object.entries(obj).map(([_key, _value]) => ...);