質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

896閲覧

連想配列の重複する値を削除したい

退会済みユーザー

退会済みユーザー

総合スコア0

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

2クリップ

投稿2022/04/08 13:38

連想配列の重複する値を削除したいのですが、うまくいかないです。

実現したいこと

const array = [
{ name: 'orange', price: 150 },
{ name: 'apple', price: 160 },
{ name: 'banana', price: 200 },
{ name: 'apple', price: 160 },
{ name: 'grape', price: 300 },
{ name: 'orange', price: 150 }
];

上記のような配列で、nameが重複しているものは両方とも削除するという処理を行いたいです。
const array = [
{ name: 'banana', price: 200 },
{ name: 'grape', price: 300 },
];
上記のような配列にしたいのですが、
const array = [
{ name: 'orange', price: 150 },
{ name: 'apple', price: 160 },
{ name: 'banana', price: 200 },
{ name: 'grape', price: 300 },
];
このような配列になってしまいます。

重複した値を全て削除するにはどうすれば良いですか。
ご教授よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2022/04/08 13:56

現在のコードをご提示ください。 現状作業依頼と変わりません
hoshi-takanori

2022/04/08 15:25

name ごとに数を数えて、複数あるものを削除 (または 1 個しかないものだけ取り出す) すれば良いのでは。
babu_babu_baboo

2022/04/08 22:20

let rst = Object.values(array.reduce ((a,b)=>(a[b.name]=a.hasOwnProperty(b.name)?null:b,a),{})).filter(_=>_);
guest

回答2

0

ベストアンサー

javascript

1const array = [ 2{ name: 'orange', price: 150 }, 3{ name: 'apple', price: 160 }, 4{ name: 'banana', price: 200 }, 5{ name: 'apple', price: 160 }, 6{ name: 'grape', price: 300 }, 7{ name: 'orange', price: 150 } 8]; 9const res=array.filter(x=>array.reduce((x,y)=>(x[y.name]?x[y.name]++:(x[y.name]=1),x),{})[x.name]==1); 10console.log(res);

投稿2022/04/09 08:31

yambejp

総合スコア114583

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

このサイトは、「やってほしいことの丸投げ」を低評価にする機能がありますので、コードだけほしいと捉えられるような質問をすると回答がつきづらいです。自分でここまではやってみたんですけどどこが悪いですか?...みたいなシチュエーションにした方が良いかと😊(特にコードを載せるのが大事です!バッククォート3つで挟むとコードになって色がつくので試して見てください。※ただし追記では使えません)

まぁ...今回は初めての質問のようですしサンプルのコードを書いておきますね😊

なるべく複雑な関数を使わずに基本的な方法で実装しています。どんな内容か理解してから使ってみてください。
※実行確認はしていませんのですいません

もっとスマートに書く方法もたくさんありますので、調べて見るといいかもしれません。
※私だったらソートを使ってもう少し楽に書くかなぁ〜🤔

countunsetarray_values関数は結構基本なので調べてくださいね😊

参考になれば幸いです😊

php

1function delete_multiple_key($ary, $key_name) { 2 $index = 0; 3 while($index < count($ary)) { 4 $current = $ary[$index][$key_name]; 5 $need_delete = false; 6 7 $count = count($ary); 8 for ($i = $index + 1; $i < $count; $i++) { 9 if ($current == $ary[$i][$key_name]) { 10 $need_delete = true; 11 unset($ary[$i]); // 削除しても配列(1次元目)のインデックスは変わらない 12 } 13 } 14 15 if ($need_delete) { 16 unset($ary[$index]); 17 array_values($ary); // 削除した分インデックスがずれているので元に戻す 18 } else { 19 $index++; 20 } 21 } 22 23 return $ary; 24}

投稿2022/04/09 06:46

編集2022/04/09 06:47
HiraKazu1124

総合スコア322

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問