javascript中是不是有类似于php中的compact的功能?

Posted

技术标签:

【中文标题】javascript中是不是有类似于php中的compact的功能?【英文标题】:Is there a function in javascript similar to compact from php?javascript中是否有类似于php中的compact的功能? 【发布时间】:2013-04-22 15:40:28 【问题描述】:

我发现compact 函数非常有用(在 php 中)。它的作用如下:

$some_var = 'value';
$ar = compact('some_var');
//now $ar is array('some_var' => 'value') 

因此,当元素的键是变量名时,它会从您指定的变量创建数组。 javascript中有什么功能吗?

【问题讨论】:

请考虑将接受的答案更改为***.com/a/45884534/6047611 完成。但是在 *** 上 4 年后改变接受的答案似乎不寻常。 谢谢,这将有助于下一个找到此帖子的人???????? 【参考方案1】:

没有类似的功能,也没有任何方法可以获取当前上下文的变量名称/值——只有当它们是window 上的“全局”变量时,不推荐这样做。如果是,您可以这样做:

function compact() 
    var obj = ;
    Array.prototype.forEach.call(arguments, function (elem) 
        obj[elem] = window[elem];
    );
    return obj;

【讨论】:

这似乎很危险且不可取,我不推荐这种方法。一个更好的解决方案是 > ***.com/a/45884534/1757364 @Gavin 同意,这个答案是 5 岁。对象初始化简写现在很常见,是一种更好的方法。【参考方案2】:

您也可以使用phpjs library 在javascript中使用与php中相同的功能

示例

var1 = 'Kevin'; var2 = 'van'; var3 = 'Zonneveld';
compact('var1', 'var2', 'var3');

输出

'var1': 'Kevin', 'var2': 'van', 'var3': 'Zonneveld'

【讨论】:

谢谢我忘了递归压缩【参考方案3】:

如果变量不在全局范围内,这仍然是可能的,但不实用。

function somefunc() 
    var a = 'aaa',
        b = 'bbb';

    var compact = function() 
        var obj = ;
        for (var i = 0; i < arguments.length; i++) 
            var key = arguments[i];
            var value = eval(key);
            obj[key] = value;
        
        return obj;
    
    console.log(compact('a', 'b')) // a:'aaa',b:'bbb'

好消息是 ES6 有一个新特性可以做到这一点。

var a=1,b=2;
console.log(a,b) // a:1,b:2

【讨论】:

【参考方案4】:

你可以使用 ES6/ES2015 Object initializer

例子:

let bar = 'bar', foo = 'foo', baz = 'baz'; // declare variables

let obj = bar, foo, baz; // use object initializer

console.log(obj);

bar: 'bar', foo: 'foo', baz: 'baz' // output

注意浏览器的兼容性,你总是可以使用Babel

【讨论】:

以上是关于javascript中是不是有类似于php中的compact的功能?的主要内容,如果未能解决你的问题,请参考以下文章

python中有没有办法解压缩类似于javascript中的传播运算符的列表? [复制]

PHP中的IIFE(立即调用函数表达式)?

Python中是不是有类似于Perl中的“想要”的东西

Javascript Mismatch 中的 PHP Pack/Unpack 实现

Python 是不是有类似于 R 包预测中的 nnetar 的模型?

nodejs中全局变量