我编写了一个将数组转换为对象的函数,数组值是对象中属性值为true的属性。
在下面的代码中,第一部分的工作方式与预期一致。它使用数组值中的属性创建了一个对象,并将对象值设置为true。在我的第二个代码示例中,我试图推进它,某些对象属性具有不同于true的值。我被困在如何让它工作。
var myArray = ['mike', 'jenn', 'fred', 'jonny', 'frank'];
var myFunc = function (array) {
var myObj = {};
for (var i = 0; i < array.length; i += 1) {
myObj[array[i]] = true;
}
return myObj;
};
var myFunc = function (array) {
var myObj = {};
for (var i = 0; i < array.length; i += 1) {
if (array[i] = 'jenn') {
myObj[array[i]] = 'is awesome';
} else if (array[i] = 'mike') {
myObj[array[i]] = 'is a rookie';
} else {
myObj[array[i]] = 'help';
}
}
return myObj;
};
答案 0 :(得分:2)
您正在使用赋值运算符,而不是比较运算符。你可以像这样修复它
if (array[i] === 'jenn') {
...
} else if (array[i] === 'mike') {
...
现在,您可能想知道为什么使用===
代替==
,就像在大多数语言中一样。原因是,类型类型强制。即使被比较的数据属于不同类型,==
也会尝试将它们中的任何一种转换为另一种类型并产生结果。但在大多数情况下,这是不可取的。
然而,只有当变量的类型也相同且值也匹配时,===
才会将表达式计算为true
。
因此,使用===
总是更好。