如何使用嵌套 for 循环在 object in JavaScript 中定位数组的名称和列表
How to locate the name, and list, of an array within an object in JavaScript using nested for loop
所以我有以下 objects 数组:
var data = [
{
"title": "scooter",
"materials": ["wood", "metal", "glass"]
},
{
"title": "baseball bat",
"materials": ["wood", "metal"]
},
{
"title": "coffee table",
"materials": ["wood"]
}
];
尝试从函数中获取以下内容:
从材料数组中,大于或等于 2 种材料以及项目是什么。
我试过以下方法:
function testing() {
let container = [];
let items = [];
for (let i = 0; i < data.length; i++) {
container.push(data[i].materials);
for (let j = 0; j < container.length; j++) {
if (container[i][j] >= 2) {
items.push(data[i].title);
}
}
}
return(items);
}
console.log(testing());
我无法获取嵌套数组来检查长度和 return 标题,更不用说完整列表了。
我希望根据条件查看的示例:
踏板车:"wood"、"metal"、"glass"
棒球棒:"wood",金属
我的代码哪里做错了?
您可以通过一个循环测试 material 长度!
let items = [];
for(let i=0 ; i<data.length; i++){
if(data[i].materials.length >= 2){
items.push(data[i].title);
}
}
您可以使用 filter:
var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}];
console.log(
data.filter(obj => obj.materials.length >= 2)
)
或者将结果转换为基于键值:
var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}];
console.log(
data.filter(obj => obj.materials.length >= 2).map(obj => ({[obj.title]: obj.materials}))
)
您可以使用映射函数和过滤函数来执行此操作:
let result = data.map(elem => ({count: elem.materials.length, materials: elem.materials, title: elem.title })).filter(elem => elem.count >= 2);
这样你就可以得到一个数组,其中包含 { count: 2, materials: ["wood", "metal"], title: "baseball bat" }
形式的对象
所以我有以下 objects 数组:
var data = [
{
"title": "scooter",
"materials": ["wood", "metal", "glass"]
},
{
"title": "baseball bat",
"materials": ["wood", "metal"]
},
{
"title": "coffee table",
"materials": ["wood"]
}
];
尝试从函数中获取以下内容: 从材料数组中,大于或等于 2 种材料以及项目是什么。
我试过以下方法:
function testing() {
let container = [];
let items = [];
for (let i = 0; i < data.length; i++) {
container.push(data[i].materials);
for (let j = 0; j < container.length; j++) {
if (container[i][j] >= 2) {
items.push(data[i].title);
}
}
}
return(items);
}
console.log(testing());
我无法获取嵌套数组来检查长度和 return 标题,更不用说完整列表了。
我希望根据条件查看的示例:
踏板车:"wood"、"metal"、"glass" 棒球棒:"wood",金属
我的代码哪里做错了?
您可以通过一个循环测试 material 长度!
let items = [];
for(let i=0 ; i<data.length; i++){
if(data[i].materials.length >= 2){
items.push(data[i].title);
}
}
您可以使用 filter:
var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}];
console.log(
data.filter(obj => obj.materials.length >= 2)
)
或者将结果转换为基于键值:
var data = [{"title": "scooter", "materials":["wood","metal","glass"]}, {"title": "baseball bat", "materials":["wood","metal"]}, {"title": "coffee table", "materials":["wood"]}];
console.log(
data.filter(obj => obj.materials.length >= 2).map(obj => ({[obj.title]: obj.materials}))
)
您可以使用映射函数和过滤函数来执行此操作:
let result = data.map(elem => ({count: elem.materials.length, materials: elem.materials, title: elem.title })).filter(elem => elem.count >= 2);
这样你就可以得到一个数组,其中包含 { count: 2, materials: ["wood", "metal"], title: "baseball bat" }