JavaScript数组空vs[]
我正在用JavaScript编写一个函数:JavaScript数组空vs[],javascript,arrays,null,Javascript,Arrays,Null,我正在用JavaScript编写一个函数: 读入JSON 如果value=null,则将null推送到数组 否则,将值推送到数组 例如,如果我一个接一个地阅读: M, L, XL, and null 返回的数组应为: [M, L, XL, null] 然而,每次我这样做,我都会得到: [M, L, XL, ""] 或者如果我只读入一个空值(因此根本没有M、L、XL等,只读入空值),那么我得到: [] 我不确定,但我认为这可能与JavaScript的工作方式有关。对于JavaScript
M, L, XL, and null
返回的数组应为:
[M, L, XL, null]
然而,每次我这样做,我都会得到:
[M, L, XL, ""]
或者如果我只读入一个空值(因此根本没有M、L、XL等,只读入空值),那么我得到:
[]
我不确定,但我认为这可能与JavaScript的工作方式有关。对于JavaScript中的数组,null是否等于[]
我真的需要在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);
}
你能把你读到的JSON包含进来吗?这个
reverse()
是怎么回事?你可能想用value
而不是type1[index]
。null
是value的唯一错误值。code
?谢谢!Reverse()是在删除重复项后对数组进行排序(有更好的方法吗?),我将改为“value”!Null将是value.code中为数不多的可用值之一(其他值仅为普通字符串或数字,如M、L、1、2、3)。是否可以包含读入的JSON?此reverse()
?您可能希望使用value
而不是type1[index]值的空值是否为值的唯一错误值。code
?谢谢!Reverse()是在删除重复项后对数组进行排序(有更好的方法吗?),我将改为“value”!Null将是value.code的少数可用值之一(其他值只是普通字符串或数字,如M、L、1、2、3)。