['string1', 'string2'].join(',') // "string1,string2"
如何获得以下结果?
"string1", "string2"
我正在使用下划线和jquery。
我的目标是做出类似的事情:
_.without(['string1', 'string2', 'string3'], "string1", "string2");
=> ['string3']
答案 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;
});