使用REST获取一个对象(JSON格式),需要将其转换为数组,以便插入表格中。这是在React的渲染函数中完成的。输入每N分钟从后端更新一次。如何将对象转换为数组?我只需要值而不需要键,因为键已经作为表格中的列值存在。
您可以使用Object#values
(ECMAScript 2017),但是IE不支持它(请参见浏览器兼容性)。
注意: ECMAScript 6规范定义了对象属性遍历的顺序。这篇博客文章详细解释了相关细节。
const map = { a: 1, b: 2, c: 3 };
const result = Object.values(map);
console.log(result);
如果你需要支持IE,可以使用Object#keys
和Array#map
:
const map = { a: 1, b: 2, c: 3 };
const result = Object.keys(map).map((key) => map[key]);
console.log(result);
var tableDataMap = this.props.data.dataMap;
,我需要将其传递给一个新的const
,就像你上面的那样,我猜?大致是这样。 - cbllconsole.log(Object.values(tableDataMap));
可以在浏览器控制台上输出 REST API 数据... 但是我很难将它们正确地放入表格中。无论如何... 我认为在这里写太困难了。 - cbll我不确定您所说的“map”是指Map对象还是普通JS对象。然而,为了多样化,我想提一下,Map对象大多数情况下(可能总是)像JSON.stringify([... myMap])
一样串行化。因此,如果您在JSON数据中收到Map对象,则应该执行类似以下操作:
var myMap = new Map().set(1,"hey").set(2,"you"),
mapData = JSON.stringify([...myMap]),
values = JSON.parse(mapData).map(d => d[1]);
console.log("mapData:",mapData);
console.log("values:",values);
你可以先将初始值设置为数组。看这个例子:
const [conversations, setConversations] = useState([]); // fianal data is array
useEffect(() => {
const fetchConversations = async () => {
const res = await axios.get("/conversations/" + user._id);
setConversations(res.data);
};
fetchConversations();
}, [user._id]);
res.data
通过使用 useState([])
作为初始值转换为数组,并通过使用 useState({})
转换为对象。
然后映射这个数组:
return (
<>
{conversations.map((conv) =>
(<Conversations key={conv._id} conversation={conv} />))}
</>
)
你可以先将初始值设置为数组。看这个例子:
const [conversations, setConversations] = useState([]); // fianal data is array
useEffect(() => {
const fetchConversations = async () => {
const res = await axios.get("/conversations/" + user._id);
setConversations(res.data);
};
fetchConversations();
}, [user._id]);
将 res.data
通过使用 useState([])
作为初始值转换为数组,并通过使用 useState({})
转换为对象。
另外,
返回:
``` {conversations.map((conv) => (