2017-08-01 15 views
1

私はインターネットで見ましたが、Array.spliceを使用して私の頭を丸くすることはできません。javascript配列から特定のユーザーを削除する

私は自分のマップに次のようにデータを格納します。彼らは、私が最も可能性が高い、使用して配列から削除したいゲームをプレイし終わったらArray.splice、その後

usersPlaying.push({ 
     user: user.id, 
     current: point 
    }); 

を。ユーザーとして特定のuser.idを持つ値を削除またはスプライスするにはどうすればよいですか。削除するユーザーは分かりますか?

答えて

1

あなたは、関数呼び出しからの戻り値は1

let usersPlaying = []; 
 

 
let user = { 
 
    id: 123 
 
}; 
 

 
let point = 0; 
 

 
usersPlaying.push({ 
 
    user: user.id, 
 
    current: point 
 
}); 
 

 
console.log(usersPlaying); 
 

 
usersPlaying.splice(
 
    usersPlaying.findIndex(({user, current}) => 
 
    user === user.id && current === point 
 
) 
 
, 1); 
 

 
console.log(usersPlaying);
に設定された第2のパラメータで .splice()に最初のパラメータとして渡されますが、一致しようとしている配列の要素のインデックスを検索するために .findIndex()を使用することができます

+0

わかりましたので、私はそれは場合は、リストからID 32でユーザを削除することになる 'usersPlaying.findIndex(({ユーザー、現在})=> ユーザ== 32 )' ようにそれを実行することができ私が尋ねることができる場合のための '1'ですか? –

+0

@MartijnEbbensはい。 '1'は['deleteCount'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)パラメータ_"古い配列要素の数を示す整数削除する。 "_ – guest271314

+0

データを編集したい場合はどうすればよいですか?ユーザーのポイントを編集したいとしたら、どうすればいいですか?また、なぜusersPlaying.findIndex(({user、current})=> user == 32)は '-1'を返しても' 0'/'1'を返さないのでしょうか? –

1

var users = [{user:1, current:10}, {user:2, current:8}, {user:3, current:12}]; 
 

 
function removeUserById(userId) { 
 
    return users.filter(function(u) { 
 
     return u.user != userId; 
 
    }) 
 
}; 
 

 
console.log(removeUserById(2)); 
 

 
//ES6 
 

 
var removeUserByIdES6 = userId => users.filter(u => u.user != userId); 
 
console.log(removeUserByIdES6(2)); 
 

 
// This will remove the user from the original array 
 

 
var removeUser = userId => users.find((u,i) => u.user == userId && users.splice(i,1)); 
 
removeUser(2); 
 
console.log(users);

元の配列に影響を与えずに特定のIDを持つユーザーを削除します。

+0

' .filter() 'は新しい配列を返します。 OPは既存の配列から要素を削除しようとしています。 – guest271314

+0

はい、元の配列から要素を削除する 'splice'の破壊バージョンを追加しました –

+0

' .map() '呼び出しで新しい配列を作成していませんか? – guest271314

関連する問題