我有一个对象/数组语句,当它不是一个数组我想把它变成一个数组时,我尝试的如下:
var statements = policy_blob['Statement'];
if(!$.isArray(statements)) {
var statements_ = statements;
statements = []
statements[0] = statements_;
}
它对我来说很好,但我正在寻找更好的选择。任何人都可以帮助我。
答案 0 :(得分:2)
您可以一次完成所有操作:
statements = [statements];
e.g:
var statements = policy_blob['Statement'];
if(!$.isArray(statements)) {
statements = [statements];
}
在分配到左侧之前评估右侧,在它的两侧都有相同的变量没有问题。
实例:
var policy_blob = {
Statement: 42
};
var statements = policy_blob['Statement'];
if(!$.isArray(statements)) {
statements = [statements];
}
console.log(statements);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:2)
您可以使用三元语法在一行中完成。
var statements = $.isArray(policy_blob['Statement']) ? policy_blob['Statement'] : [policy_blob['Statement']];
或者在变量缓存后执行此操作。
var statements = policy_blob['Statement'];
statements = $.isArray(statements) ? statements : [statements];
// or using Short-circuit evaluation property of `||`(logical or)
var statements = policy_blob['Statement'];
$.isArray(statements) || statements = [statements];