2016-10-04 12 views
1

配列(または?を設定)がarr = ['a', 'b', 'c']で、dを追加したいと思います。これはarr.push('d')で行うことができます。配列の重複を押して削除する

しかし、私は配列内で一意の値だけを必要とし、最新の値を配列の先頭に追加します。

私はこれを行うことができると思いますので、私は最初dを追加した場合、配列は['d', 'a', 'b', 'c']になるべきと私は今bを追加した場合、配列は['b', 'd', 'a', 'c']など

になるはず、それは

function addElement(arr, element) { 
    if (arr.includes(element)) { 
    arr.splice(arr.indexOf(element, 1)); 
    } 
    arr.unshift(element); 
} 

のようなものであるべきセットには一意の値しか含めることができないため、Setを使用します。

+1

[ユニークな配列の値(http://stackoverflow.com/questions/1960473/unique-values-in-an-array) – christopher

+0

及び機能彼の可能な重複それで問題は何でしょうか? – Aschab

+0

@AhmerSaeed - 'PHP'はタグ付けされていません! – Rayon

答えて

2

Setを使用してアイテムを事前に削除してから追加することができます。必要な順序を取得するには、レンダリングされた配列を逆にする必要があります。

function addToSet(v, set) { 
 
    set.delete(v); 
 
    set.add(v); 
 
} 
 

 
var set = new Set; 
 

 
addToSet('d', set); 
 
addToSet('c', set); 
 
addToSet('b', set), 
 
addToSet('a', set); 
 
addToSet('d', set); 
 

 
console.log([...set].reverse());

0
var val = 'c'; 
var arr = ['a','b']; 
if($.inArray(val, arr) ==-1){ 
// value dosend exit  
    arr.unshift(val); 
} else { 
    console.log('value already there') 
} 
console.log(arr); 

$ .inArrayは()のindexOf()メソッドに似て動作します。配列内の要素を検索し、見つかった場合はインデックスを返します。

http://webrewrite.com/check-value-exist-array-javascriptjquery/

0

あなたの関数がちょうどあなたが小さな修正。特にこれは次のようになり.unshift()パフォーマンスを好きではない人のための

arr.splice(arr.indexOf(element),1); 

var arr = ['a', 'b', 'c'] ; 
 

 
function addElement(arr, element) { 
 
    if (arr.includes(element)) { 
 
    arr.splice(arr.indexOf(element),1); 
 
    } 
 
    arr.unshift(element); 
 
} 
 
addElement(arr,'d'); 
 
addElement(arr,'b'); 
 
console.log(arr);

0

で調整する必要が動作しますこの仕事をする別の方法。

function funky(a,e){ 
 
    var ix = a.indexOf(e); 
 
    return (~ix ? a.splice(ix,0,...a.splice(0,ix)) 
 
       : a.splice(0,0,e),a); 
 
} 
 
var a = ['d', 'a', 'b', 'c']; 
 

 
console.log(funky(a,'z')); 
 
console.log(funky(a,'d')); 
 
console.log(funky(a,'c')); 
 
console.log(funky(a,'f'));

関連する問題