['string1', 'string2'].join(',') // "string1,string2"
如何获得以下结果?
"string1", "string2"
我正在使用下划线和 jquery。
我的目标是做这样的事情:
_.without(['string1', 'string2', 'string3'], "string1", "string2");
=> ['string3']
['string1', 'string2'].join(',') // "string1,string2"
如何获得以下结果?
"string1", "string2"
我正在使用下划线和 jquery。
我的目标是做这样的事情:
_.without(['string1', 'string2', 'string3'], "string1", "string2");
=> ['string3']
对于您的情况,您不需要“免费”元素列表。
您只需要使用_.difference
而不是_.without
.
_.difference(['string1', 'string2', 'string3'], ["string1", "string2"]);
你不能有一个“免费”的元素列表。这不是 Javascript 的工作方式。你总是处理数组、集合之类的东西。
我不太了解 Underscore.js,但试试这个:
var a = ['string1', 'string2', 'string3'],
b = ['string1', 'string2'];
_.without.apply(_, [a].concat(b));
的目的apply
是调用具有动态数量的动态参数的函数。
你可以像这样得到它:
var something = '"' + ['string1', 'string2'].join('", "') + '"';
这将导致:"string1", "string2"
或者你可以使用JSON.stringify(['string1', 'string2'])
这将导致:["string1","string2"]
另一种方法是编写一个简单的函数,从另一个中删除一个字符串数组,比如
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"]
差异看起来更适合 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;
});