如何从数组中获取javascript中的列表

时间:2012-11-26 15:34:02

标签: javascript jquery underscore.js

['string1', 'string2'].join(',') // "string1,string2"

如何获得以下结果?

"string1", "string2"

我正在使用下划线和jquery。

我的目标是做出类似的事情:

_.without(['string1', 'string2', 'string3'], "string1", "string2");
=> ['string3']

5 个答案:

答案 0 :(得分:2)

您不能拥有“免费”元素列表。这不是Javascript的工作原理。你总是处理数组,集合和那些东西。

我不太了解Underscore.js,但试试这个:

var a = ['string1', 'string2', 'string3'],
    b = ['string1', 'string2'];
_.without.apply(_, [a].concat(b));

apply的目的是调用具有动态数量的动态参数的函数。

答案 1 :(得分:2)

对于您的情况,您不需要“免费”元素列表 您只需使用_.difference代替_.without即可。

  _.difference(['string1', 'string2', 'string3'], ["string1", "string2"]);

答案 2 :(得分:1)

你可以这样得到它:

var something = '"' + ['string1', 'string2'].join('", "') + '"';

将导致:"string1", "string2"

或者您可以使用JSON.stringify(['string1', 'string2'])

将导致:["string1","string2"]

答案 3 :(得分:0)

另一种方法是编写一个简单的函数,从另一个函数中删除一个字符串数组,比如

var arr = ["str1","str2","str3"];

   function removeStrings(a,strs) {
     strs.forEach(function(e) {
       a.splice(a.indexOf(e),1);
     });
   }

removeStrings(arr,["str2","str1"]);
console.log(arr);//["str3"]

答案 4 :(得分:0)

差异看起来更合适 http://underscorejs.org/#difference

var rem, orig, val;
rem = ['string1', 'string2'];
orig = ['string1', 'string2', 'string3'];

val = _.difference(orig, rem); // ['string3'];

http://jsbin.com/eyegoh/1/edit

或jQuery使用的时间更长一点 http://api.jquery.com/jQuery.grep/http://api.jquery.com/jQuery.inArray/

var rem, orig, val;
rem = ['string1', 'string2'];
orig = ['string1', 'string2', 'string3'];

val = $.grep(orig, function(el, ix) {
    return $.inArray(el, rem) == -1;
});

http://jsbin.com/uhihid/1/edit