Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中是否有类似于php中compact的函数?_Php_Javascript_Arrays_Variables - Fatal编程技术网

javascript中是否有类似于php中compact的函数?

javascript中是否有类似于php中compact的函数?,php,javascript,arrays,variables,Php,Javascript,Arrays,Variables,我发现compact函数非常有用(在php中)。它的作用如下: $some_var = 'value'; $ar = compact('some_var'); //now $ar is array('some_var' => 'value') 所以当元素的键是variable name时,它将从您指定的变量创建数组。 javascript中有任何类型的函数吗?没有类似的函数,也没有任何方法可以获取当前上下文的变量名/值——仅当它们是窗口上的“全局”变量时,这是不推荐的。如果是,您可以这

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

$some_var = 'value';
$ar = compact('some_var');
//now $ar is array('some_var' => 'value') 
所以当元素的键是variable name时,它将从您指定的变量创建数组。
javascript中有任何类型的函数吗?

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

function compact() {
    var obj = {};
    Array.prototype.forEach.call(arguments, function (elem) {
        obj[elem] = window[elem];
    });
    return obj;
}
您还可以在javascript中使用与php中相同的函数

例子 输出
如果变量不在全局范围内,它仍然是可能的,但不实用

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/ES2015

例如:


当心浏览器的兼容性,你总是可以使用

谢谢,我忘记了递归压缩。这看起来很危险,不受欢迎,我不推荐这种方法。一个更好的解决方案是>@Gavin同意,这个答案已经5年了。现在,对象初始化速记通常是可用的,并且是一个更好的方法。请考虑改变已接受的答案。但是在stackoverflow上,在4年后改变被接受的答案似乎是不寻常的。谢谢你,这将帮助下一个找到这篇文章的人
{'var1': 'Kevin', 'var2': 'van', 'var3': 'Zonneveld'}
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'}
}
var a=1,b=2;
console.log({a,b}) // {a:1,b:2}
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