javascript typeof null 没有按预期工作

Posted

技术标签:

【中文标题】javascript typeof null 没有按预期工作【英文标题】:javascript typeof null isnt working as expected 【发布时间】:2020-11-25 23:07:11 【问题描述】:

我有一个对象对象,其中每个对象都有一个键和一个数组作为值。这就是我所拥有的image。我在每个数组中有一些值小于x 元素的数组(在本例中为20),所以我编写了这段代码来用零填充我的数组。这是我的代码image 的输出。但是,如您所见,当数组仅包含 null 值时,代码不起作用。这让我耽误了一段时间。 这是我的代码:

let results[tab] = 
    "Capital Cost ($)": [-2176346066.1517634],
    "Electricity Revenue ($)": 
    [25128866.14469719, 34695653.93022109, 42581870.9302151, 48994313.58438795],
"Net Present Value ($)": [null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null]


const maxLength = Object.values(results[tab]).map( x => x.map( x=> x === null ? 0 : x))
                .reduce( (acc, item) => Math.max(acc, item.length), 0);
const new_values = Object.values(results[tab]).map( value => value.concat(Array(maxLength - value.length).fill(0)));
const keys = Object.keys(results[tab]);
var toObj = (ks, vs) => ks.reduce((o,k,i)=> o[k] = vs[i]; return o;, );
const new_results = toObj(keys, new_values);
console.log(new_results)

解决方案:原来map 没有应用新条件。解决了!

【问题讨论】:

typeof 总是返回一个字符串,所以它永远不会是null 请正确格式化代码。不要指望任何人在当前状态下阅读它。 我会帮忙,但我不会重新格式化代码,如果你想检查 null,只需执行 if (something === null) 或 if (!something) 不能设置const results[tab],只能这样说const results =[]; let tab =1; results[tab] = ... @Sascha 只是给个提示,谢谢 【参考方案1】:

x 的类型永远不能为 null,因为 null 是一个值而不是一个类型。甚至 null 的类型也是对象。所以你的代码中不需要 typeof。

【讨论】:

赞成,但也请添加正确的代码 (x === null) js背景差,试过了还是不行!相同的输出

以上是关于javascript typeof null 没有按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript-Runoob:JavaScript typeof, null, undefined

JavaScript typeof, null, 和 undefined

JavaScript typeof, null, 和 undefined

JavaScript typeof, null, 和 undefined

在 JavaScript 中为什么 typeof null 的结果是 object?

javascript基础扫盲