我可以使用多个 for 循环通过索引访问字符串、数组中的单个字母吗?
Can I access individual letters in a string, in an array, via index using multiple for loops?
我是 1 个月的新手,试图了解数组,以及如何更好地访问它们,我希望成为数组 for 循环的高手,因为 IDK 如何过滤、映射和reduce 正在做他们正在做的事情。我想知道如何使用 for 循环和索引将 'Milk'
中的 'M'
更改为 'S'
。为什么这个日志中的 i
变量 'Top Shelf'
+ 子数组的内容,而不只是 Top Shelf, Mid-Shelf, Vegetable Drawer, Meat Drawer
?为什么 console.log([i[k]])
不只列出 Top Shelf
中子数组的内容?
let fridge = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer', 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];
for(let i = 0; i < fridge.length; i++) {
for(let k = 0; k < fridge[i].length; k++) {
}
console.log(fridge[i[k]])
}
首先,您的代码不起作用,因为 k 不会被定义,因为您正试图在它声明的循环之外使用它。
其次 - 为了访问单个元素并将第一个字母更改为 'S',严格使用 for 循环,您需要执行如下操作:
for(let i = 0; i < fridge.length; i++) {
let shelf = fridge[i];
for(let j = 0; j < shelf.length; j++) {
let item = shelf[1][j];
let itemSplit = item.split('')
let newItem = 'S'+item.slice(1, itemSplit.length);
shelf[1][j] = newItem;
}
}
console.log(fridge);
第三 - 如果您得到 Top Shelf, [contents]
的结果,那是因为您正在完全打印该数组。内容实际上并不属于 Top Shelf
- 它们是同一数组中的不同元素,因此 [i[k]]
将不起作用。
首先考虑以这种方式安排您的数据结构。
var fruits = [{'Top-Shelf': ['Milk', 'Grapes', 'Margarine'], 'Mid-Shelf': ['Beer', 'Eggs', 'Pizza', 'Soda'], 'Vegetable-Drawer': ['Celery', 'Broccoli', 'Carrots', 'Lettuce'], 'Meat-Drawer': ['Bacon', 'Turkey', 'Ham', 'Chicken']}];
当你 运行 一个 for 循环时:
for(var i = 0; i < arr.length; i++)
{
console.log(fruits[i]);
}
您可以在控制台中像这样获得您的应用程序的逻辑视图。
https://i.stack.imgur.com/1NbOn.png
第二部分问题,如何获取子数组?
这是它的代码。
让冰箱 = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer' , 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];
var result = fridge.map((arr)=>{
var result = "";
if(Array.isArray(arr) == true){
arr.map((arr1)=>{
result += arr1;
})
}
else {
result =+ arr+",";
}
return result;
});
console.log(result);
在 jsfiddle 中尝试此代码。
我是 1 个月的新手,试图了解数组,以及如何更好地访问它们,我希望成为数组 for 循环的高手,因为 IDK 如何过滤、映射和reduce 正在做他们正在做的事情。我想知道如何使用 for 循环和索引将 'Milk'
中的 'M'
更改为 'S'
。为什么这个日志中的 i
变量 'Top Shelf'
+ 子数组的内容,而不只是 Top Shelf, Mid-Shelf, Vegetable Drawer, Meat Drawer
?为什么 console.log([i[k]])
不只列出 Top Shelf
中子数组的内容?
let fridge = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer', 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];
for(let i = 0; i < fridge.length; i++) {
for(let k = 0; k < fridge[i].length; k++) {
}
console.log(fridge[i[k]])
}
首先,您的代码不起作用,因为 k 不会被定义,因为您正试图在它声明的循环之外使用它。
其次 - 为了访问单个元素并将第一个字母更改为 'S',严格使用 for 循环,您需要执行如下操作:
for(let i = 0; i < fridge.length; i++) {
let shelf = fridge[i];
for(let j = 0; j < shelf.length; j++) {
let item = shelf[1][j];
let itemSplit = item.split('')
let newItem = 'S'+item.slice(1, itemSplit.length);
shelf[1][j] = newItem;
}
}
console.log(fridge);
第三 - 如果您得到 Top Shelf, [contents]
的结果,那是因为您正在完全打印该数组。内容实际上并不属于 Top Shelf
- 它们是同一数组中的不同元素,因此 [i[k]]
将不起作用。
首先考虑以这种方式安排您的数据结构。
var fruits = [{'Top-Shelf': ['Milk', 'Grapes', 'Margarine'], 'Mid-Shelf': ['Beer', 'Eggs', 'Pizza', 'Soda'], 'Vegetable-Drawer': ['Celery', 'Broccoli', 'Carrots', 'Lettuce'], 'Meat-Drawer': ['Bacon', 'Turkey', 'Ham', 'Chicken']}];
当你 运行 一个 for 循环时:
for(var i = 0; i < arr.length; i++)
{
console.log(fruits[i]);
}
您可以在控制台中像这样获得您的应用程序的逻辑视图。
https://i.stack.imgur.com/1NbOn.png
第二部分问题,如何获取子数组? 这是它的代码。
让冰箱 = [['Top Shelf', ['Milk', 'Grapes', 'Margarine']], ['Mid-Shelf', ['Beer' , 'Eggs', 'Pizza', 'Soda']], ['Vegetable Drawer', ['Celery', 'Broccoli', 'Carrots', 'Lettuce']], ['Meat Drawer', ['Bacon', 'Turkey', 'Ham', 'Chicken']]];
var result = fridge.map((arr)=>{
var result = "";
if(Array.isArray(arr) == true){
arr.map((arr1)=>{
result += arr1;
})
}
else {
result =+ arr+",";
}
return result;
});
console.log(result);
在 jsfiddle 中尝试此代码。