javascript - 数组中的 indexOf 返回 -1 而不是索引号
问题描述
当我将“orderOfPlanets”传递给我的 each(){}; 函数,我希望得到行星的名称和相应的索引号,但是我每次都得到-1。为什么是这样?
var mostEvil = {
Cthulhu: "Most evil",
Dracula: "Fairly evil",
Voldermort: "Pretty damn evil",
Sauron: "Ridiculously evil"
};
var orderOfPlanets = ["Mercury", "Venus", "Earth", "Mars"];
function each(input, callback) {
if (Array.isArray(input)) {
for (var i = 0; i < orderOfPlanets.length; i++) {
var name = orderOfPlanets[i];
var val = orderOfPlanets.indexOf(i);
callback(val, name);
}
} else if (typeof input == "object") {
for (var key in input) {
var name = key;
var val = input[key];
callback(val, name);
}
}
}
each(orderOfPlanets, function(val, name) {
console.log("The value of " + name + " is " + val);
});
水星的值为 0 金星的值为 1 地球的值为 2 火星的值为 3
解决方案
取indexOf
名字的不是 i (索引)
var mostEvil = {
Cthulhu: "Most evil",
Dracula: "Fairly evil",
Voldermort: "Pretty damn evil",
Sauron: "Ridiculously evil"
};
var orderOfPlanets = ["Mercury", "Venus", "Earth", "Mars"];
function each(input, callback) {
if (Array.isArray(input)) {
for (var i = 0; i < orderOfPlanets.length; i++) {
var name = orderOfPlanets[i];
//var val = orderOfPlanets.indexOf(i);
var val = orderOfPlanets.indexOf(name);
callback(val, name);
}
} else if (typeof input == "object") {
for (var key in input) {
var name = key;
var val = input[key];
callback(val, name);
}
}
}
each(orderOfPlanets, function(val, name) {
console.log("The value of " + name + " is " + val);
});
回归同样有效i
var mostEvil = {
Cthulhu: "Most evil",
Dracula: "Fairly evil",
Voldermort: "Pretty damn evil",
Sauron: "Ridiculously evil"
};
var orderOfPlanets = ["Mercury", "Venus", "Earth", "Mars"];
function each(input, callback) {
if (Array.isArray(input)) {
for (var i = 0; i < orderOfPlanets.length; i++) {
var name = orderOfPlanets[i];
//var val = orderOfPlanets.indexOf(i);
var val = i;
callback(val, name);
}
} else if (typeof input == "object") {
for (var key in input) {
var name = key;
var val = input[key];
callback(val, name);
}
}
}
each(orderOfPlanets, function(val, name) {
console.log("The value of " + name + " is " + val);
});
推荐阅读
- typescript - 在 TypeScript 中为导入的符号指定显式类型
- vba - VBA 搜索和替换脚本会产生很长的延迟
- javascript - js构建加载div
- python - 基于单个查询中三个可能条件之一的 SQL SELECT
- r - Imputation - 使用 R 分配具有未标记变量的值
- r - 使用 Chron 转换时间未按预期工作
- android - 如何在没有所有这些错误的情况下升级 Flutters minSdkVersion?
- c# - C# 从字符串变量中获取类型并在泛型方法中使用它
- python - 从第一行在pycharm控制台中执行多行输入
- java - 配置 Spring Boot Security 以使用 JWT 作为访问令牌和刷新令牌的常规令牌?