繁体   English   中英

循环遍历嵌套数组以返回对象的值

[英]Loop through nested array to return values of object

我有一个嵌套数组,我想要做的是获取嵌入在数组中的对象的所有值。 我目前正在获取每个嵌入的对象并调用Object.values来获取值,但是当数组大小很大时,此方法效率不高。 有没有办法遍历数组并返回每个对象的值? 任何帮助表示赞赏。 提前致谢。

 const data = [{"path":"uploads\\\\20211115000755-package.json"},{"path":"uploads\\\\20211115012255-index.html"},{"path":"uploads\\\\20211115014342-dataServerMid.js"},{"path":"uploads\\\\20211115031212-index.js"},{"path":"uploads\\\\20211115031218-uploadDataServer.js"},{"path":"uploads\\\\20211115031232-index.js"},{"path":"uploads\\\\20211115031244-dataServerMid.js"},{"path":"uploads\\\\20211115031250-uploadData.css"},{"path":"uploads\\\\20211115031303-20211115012255-index.html"},{"path":"uploads\\\\20211115031318-20211115031303-20211115012255-index.html"},{"path":"uploads\\\\20211115050204-exportsCapture.JPG"},{"path":"uploads\\\\20211115052347-[FREE] Stunna 4 Vegas x DaBaby x NLE Choppa Type Beat Call of Duty (320 kbps).mp3"},{"path":"uploads\\\\20211115200304-Readme.docx"},{"path":"uploads\\\\20211115202751-Visual Artist Series Fall 2019Corrected.docx"},{"path":"uploads\\\\20211115203354-ln command examples.docx"},{"path":"uploads\\\\20211115210027-Q2.docx"},{"path":"uploads\\\\20211116011817-Fall 2019 ABCD Plattsburgh Syllabi Course Description.docx"}] //change this to loop and return all the values instead of having to call by index const dataValues = [Object.values(data[0]).toString(), Object.values(data[1]).toString(), Object.values(data[2]).toString()] console.log(dataValues)

更新:我尝试了@yousaf 的方法。 它适用于我的 3 项数组,但不适用于此:

 const data = [{ "path": "uploads\\\\20211115000755-package.json" }, { "path": "uploads\\\\20211115012255-index.html" }, { "path": "uploads\\\\20211115014342-dataServerMid.js" }, { "path": "uploads\\\\20211115031212-index.js" }, { "path": "uploads\\\\20211115031218-uploadDataServer.js" }, { "path": "uploads\\\\20211115031232-index.js" }, { "path": "uploads\\\\20211115031244-dataServerMid.js" }, { "path": "uploads\\\\20211115031250-uploadData.css" }, { "path": "uploads\\\\20211115031303-20211115012255-index.html" }, { "path": "uploads\\\\20211115031318-20211115031303-20211115012255-index.html" }, { "path": "uploads\\\\20211115050204-exportsCapture.JPG" }, { "path": "uploads\\\\20211115052347-[FREE] Stunna 4 Vegas x DaBaby x NLE Choppa Type Beat Call of Duty (320 kbps).mp3" }, { "path": "uploads\\\\20211115200304-Readme.docx" }, { "path": "uploads\\\\20211115202751-Visual Artist Series Fall 2019Corrected.docx" }, { "path": "uploads\\\\20211115203354-ln command examples.docx" }, { "path": "uploads\\\\20211115210027-Q2.docx" }, { "path": "uploads\\\\20211116011817-Fall 2019.docx" }] //change this to loop and return all the values instead of having to call by index const dataValues = data.map((obj, idx) => obj["path" + (idx + 1)]) console.log(dataValues)

使用for...of遍历数组,然后将值推送到新数组。

 const data=[{path1:"uploads\\\\20211115000755-package.json"},{path2:"uploads\\\\20211115012255-index.html"},{path3:"uploads\\\\20211115014342-dataServerMid.js"}]; const arr = []; for (const obj of data) { const [value] = Object.values(obj); arr.push(value); } console.log(arr);

或者你可以使用map

 const data=[{path1:"uploads\\\\20211115000755-package.json"},{path2:"uploads\\\\20211115012255-index.html"},{path3:"uploads\\\\20211115014342-dataServerMid.js"}]; const arr = data.map(obj => { const [value] = Object.values(obj); return value; }); console.log(arr);

使用 for 循环迭代data

 const data = [{ "path1": "uploads\\\\20211115000755-package.json" }, { "path2": "uploads\\\\20211115012255-index.html" }, { "path3": "uploads\\\\20211115014342-dataServerMid.js" }] const dataValues = []; for(var i = 0; i < data.length; i++) { dataValues.push(Object.values(data[i]).toString()) } console.log(dataValues)

这可能对你有帮助。 试试看..

 function nestedLoop(obj) { const res = {}; function recurse(obj, current) { for (const key in obj) { let value = obj[key]; if(value != undefined) { if (value && typeof value === 'object') { recurse(value, key); } else { // Do your stuff here to var value res[key] = value; } } } } recurse(obj); return res; }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM