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

次の結果を得るにはどうすればよいですか?

"string1", "string2"

アンダースコアとjqueryを使用しています。

私の目標はそのようなものを作ることです:

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

5 に答える 5

2

要素の「無料」リストを作成することはできません。それはJavascriptが機能する方法ではありません。あなたはいつも配列やコレクションなどを扱っています。

Underscore.jsはよくわかりませんが、これを試してみてください。

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

の目的はapply、動的な数の動的引数を使用して関数を呼び出すことです。

于 2012-11-26T15:37:27.567 に答える
2

あなたの場合、要素の「無料」リストは必要ありません。の代わりに
使用する必要があります。 _.difference_.without

  _.difference(['string1', 'string2', 'string3'], ["string1", "string2"]);
于 2012-11-27T13:54:59.113 に答える
1

あなたはそれをこのように得ることができます:

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

結果は次のようになります。"string1", "string2"

代わりにあなたは使うことができますJSON.stringify(['string1', 'string2'])

結果は次のようになります。["string1","string2"]

于 2012-11-26T15:41:25.273 に答える
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"]
于 2012-11-26T15:44:45.387 に答える
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

または、 http ://api.jquery.com/jQuery.grep/およびhttp://api.jquery.com/jQuery.inArray/を使用してjQueryを使用すると少し長くなります

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

于 2012-11-26T16:45:30.750 に答える