2017-12-02 4 views
0

私はいくつかの調査をしましたが、私のユースケースに正確に一致するものは何も見つかりませんでした。指定された要素を持たない新しい配列を返す元の1行では?

元の要素のない新しい配列をすばやく返す必要があります。言い換えれば、私は何とかsplice/indexOf /などを組み合わせる必要がありますが、以下は失敗しています:削除している1つの要素 "TEST"を返すだけです。

以下の関数は、削除されたアイテム以外のすべてを含む新しい配列を返す必要があります。あなたの質問を解決する場合

function newArrayWithout(array, elem) { 
 
    return array.splice(array.indexOf(elem), 1); 
 
} 
 

 
var array = ["abc", "def", "TEST", "ghi"]; 
 

 
var newarray = newArrayWithout(array, "TEST"); 
 

 
console.log('New array: ' + newarray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答えて

1

チェック:

var myarr = ["abc", "def", "TEST", "ghi"]; 

var r = myarr.filter(function(el){ 
    return el != "TEST"; 
}); 

alert(r); 
console.log(r); 

JSFiddle Example

0

.splice().indexOf()を使用するには、あなたが既に持っているものを行うことができます。しかし、返される値は、.splice()の戻り値が削除される要素なので、配列が返されます。残りの要素ではありません。元の配列を保存したい場合は、最初に配列をコピーする必要があります。例えば

var array = ["abc", "def", "TEST", "ghi"]; 
 

 
// Copy the values of array first 
 
var newArray = array.slice(); 
 

 
// Splice using indexOf the element to be removed 
 
newArray.splice(newArray.indexOf("TEST"), 1); 
 

 
console.log('original :' + array); 
 
console.log('new :' + newArray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

関連する問題