【发布时间】:2017-08-01 16:27:55
【问题描述】:
编辑:
最终我想打印出这样的东西: 滑板车有3种材质:“木头”、“金属”、“玻璃”;棒球棒有两种材质:“木头”、“金属”仅使用 for 循环。
我正在使用以下内容:
var data = [
{
"title": "scooter",
"materials": ["wood", "metal", "glass"]
},
{
"title": "baseball bat",
"materials": ["wood", "metal"]
},
{
"title": "coffee table",
"materials": ["wood"]
}];
我认为我可以使用 for 循环进行简单的传递,以获取标题、计数并创建一个数组,如下所示:
function testing () {
let items = []; //contains the titles
let container = []; //contains the materials
let count = 0; //count of items
for (let i=0; i<data.length; i++){
if (data[i].materials.length > 2){
container.push(data[i].materials);
count = data[i].materials.length;
items.push(data[i].title)
}
}return container;
}
console.log(testing);
我不知道代码是否正确,可以得到我想要的东西。有什么想法吗?
编辑:因此,当我运行此代码时,我只是获取材料列表。做退货和console.log(testing)的时候;我正在获取项目列表。
看起来计数只是获取标题而不是材料的数组计数。
使用附加代码进一步编辑:
function testing () {
let items = [];
let container = [];
let count = 0;
let result = '';
for (let i=0; i<data.length; i++){
if (data[i].materials.length > 2){
container.push(data[i].materials);
items.push(data[i].title)
for (let j=0; j<container.length; j++){
result= `${items[j]} has materials :${container[j]}`;
}
}
}return result;
}
console.log(testing());
通过上面的内容,我可以得到最后一个标题来显示符合 if 语句的项目列表。但是,我无法计算材料的数量。例如,它只是显示: 棒球棒的材质有木头、金属
我面临的问题是如何获得计数,然后显示所有匹配的对象。所以它会改为: 滑板车有 3 种材料,分别是:木材、金属、玻璃 棒球棒有两种材质:木头、金属
【问题讨论】:
-
好吧,当你尝试运行它时发生了什么?
-
“我不知道代码是否正确,可以得到我想要的。” 那么,是还是不是?你遇到问题了吗?如果有,什么问题?
-
您的代码有点难以阅读,但是是的。如果要返回多个值,则需要将所有值存储在某个容器中。除了将它们放在列表中,您还可以将它们存储在 JavaScript 对象中。
-
你只能从一个函数返回一个值,当然可以是一个对象或数组。但是为什么要打扰呢?在函数中构建字符串,并将该字符串返回打印。
-
我们需要更多细节:您正在寻找的准确输出;您使用的确切实际代码;您遇到的问题/错误
标签: javascript arrays for-loop