我有一个代码,它从用户输入的输入字段中获取一些值。我的JS代码应该检查所有必需的标题是否都不为空。如果没有,则应显示带有结果的alert
消息。这是我的代码
var result = "";
function isStringEmpty(string2Check)
{
return string2Check == "" || string2Check[0] == " ";
};
var titles =
[
["1", "This is 1st title(not empty)"],
["", "Suppose this is empty"],
["", "Suppose this is empty too"]
];
var titlesMap = new Map(titles);
titlesMap.forEach(function(key, value, titlesMap)
{
if(isStringEmpty(value))
{
result += 'Field ' + '"' + key + '"' +' cannot be empty!\n'
}
});
result = result.replace(/\n$/, "");
alert(result);
请参阅?忽略“假设这是空的”(结果字符串不包含它):( result
只接收最后一条结果消息。为什么?顺便说一下,为什么key
和{地图中的{1}}属性搞砸了?(我认为键是“1”,值是“这是第一个标题(非空)”,但它不是..)我猜这是因为使用了数组作为属性......
答案 0 :(得分:4)
您正在使用""
并传递键/值对。地图中的键必须是唯一的。通过两次添加具有相同键(Map
)的条目,您将用第二个覆盖第一个。
如果你不是那些作为键/值对,不要使用titlesMap
,只需直接使用数组数组,如下所示(主要更改是删除forEach
并在var result = "";
function isStringEmpty(string2Check)
{
return string2Check == "" || string2Check[0] == " ";
};
var titles =
[
["1", "This is 1st title(not empty)"],
["", "Suppose this is empty"],
["", "Suppose this is empty too"]
];
titles.forEach(function(entry)
{
if(isStringEmpty(entry[0]))
{
result += 'Field ' + '"' + entry[1] + '"' +' cannot be empty!\n'
}
});
result = result.replace(/\n$/, "");
alert(result);
):
isStringEmpty
旁注:您的" foo"
函数会说function isStringEmpty(string2Check) {
return !string2Check.trim();
}
为空。我认为那不是你想要做的。你可能只想要:
combined_file.txt
...为过时的浏览器填充String#trim
。
答案 1 :(得分:0)
如果您看到两个值为空
var titles =
[
["1", "This is 1st title(not empty)"],
["", "Suppose this is empty"],
["", "Suppose this is empty too"]
];
当您进行映射时,那么映射时间键应该是唯一的。
var titlesMap = new Map(titles);
第一次映射时,值将为
["", "Suppose this is empty"]
这里的关键是===> “”和值假设这是空的
但之后它会覆盖键的值
["", "Suppose this is empty too"]
所以最后一个值将在假设这也是空的
你应该尝试不用映射