我正在用JavaScript编写一个函数:
例如,如果我一个接一个地读入:
M, L, XL, and null
返回的数组应为:
[M, L, XL, null]
然而,每次我这样做,我都会得到:
[M, L, XL, ""]
或者,如果我只读取一个空值(所以根本没有M,L,XL等,只有null),那么我得到:
[]
我不确定,但我认为这可能与JavaScript的工作原理有关。 JavaScript中的数组是否等效于[]?
我真的需要在我的JSON中输出null,因为JSON将被另一个我无法控制的文件读取。
我不是特别擅长JavaScript,但我认为该函数应该完成工作(减去[] / null部分)。它似乎有点重复,特别是标志部分,但如果我直接在嵌套循环中推送它,过滤器似乎忽略/删除null。
//Results will be stored here
var type1EnumUnique = [];
var type2EnumUnique = [];
function extractCode() {
var type1Enum = [];
var typeEnum = [];
//For uniqueFilter() below
var type1NullFlag = false;
var type2NullFlag = false;
$.each(type1, function (index, value) {
if (value.code)
type1Enum.push(value.code);
else
type1NullFlag = true;
$.each(type1[index].type2, function (index, value) {
if (value.code)
typeEnum.push(value.code);
else
type2NullFlag = true;
});
});
//Filter to make array unique
type1EnumUnique = type1Enum.reverse().filter(uniqueFilter).reverse();
type2EnumUnique = typeEnum.reverse().filter(uniqueFilter).reverse();
function uniqueFilter(value, index, arr) {
return arr.indexOf(value, index + 1) === -1;
}
//Appending "null" back to array (filter removes/ignores null)
if (type1NullFlag === true)
type1EnumUnique.unshift(null);
if (type2NullFlag === true)
type2EnumUnique.unshift(null);
}