在javascript中创建对象到数组的更好方法?

时间:2017-09-19 15:39:54

标签: javascript arrays object

我有一个对象/数组语句,当它不是一个数组我想把它变成一个数组时,我尝试的如下:

var statements = policy_blob['Statement'];
if(!$.isArray(statements)) {
  var statements_ = statements;
  statements = []
  statements[0] = statements_;
}

它对我来说很好,但我正在寻找更好的选择。任何人都可以帮助我。

2 个答案:

答案 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];

参考:Ternary operatorShort-circuit evaluation