どうやって取り出せばいいか分からず
まずは、どのようなデータにするかという目標を考えるべきです。
ご質問には目標として想定されたデータが示されておりませんので、勝手に決めた目標で例示します。
json
1{
2 "sample4":{"number":"リンゴ","life":1,"five":"1個"},
3 "sample21":{"number":"バナナ","life":5,"five":"2個"}
4}
※data[0].type
や data[0].number
は言及されていませんでしたので切り捨てたデータとします。
javascript
1let d = data[0];
2let rslt = {}; // 求めるデータ(オブジェクト)
3for( let prop in d ) { // オブジェクトの プロパティ名を総当り
4 let m;
5 if( m = prop.match(/^(sample\d+)_(.*)/) ) { // 文字列処理(正規表現)
6 //console.log(m)
7 let [_, grp, key] = m;
8 if( !rslt[grp] ) rslt[grp] = {};
9 rslt[grp][key] = d[prop].value;
10 }
11}
12console.log( rslt );
13/*
14 => {
15 "sample4":{"number":"リンゴ","life":1,"five":"1個"},
16 "sample21":{"number":"バナナ","life":5,"five":"2個"}
17 }
18 */
Object.entries().reduce()
を使うと更にスマートになります。
※要件をまとめるコツは、リファレンスや他者の質疑などの活字を真似て、どのような言い回しが幅広い年齢に伝わるのかを推敲し、箇条書きにすることです。
追記)
もう一案
json
1{
2 "sample4":{"number":4,"name":"リンゴ","life":1,"five":"1個"},
3 "sample21":{"number":21,"name":"バナナ","life":5,"five":"2個"}
4}
javascript
1var data = datas[0];
2var tmp = {};
3for( var prop in data ) {
4 let m;
5 if( m = prop.match(/^(sample(\d+))_(.*)/) ) { // number に相当する箇所を抽出
6 //console.log(m)
7 let [_, grp, num, key] = m;
8 if( !tmp[grp] ) tmp[grp] = {};
9 if( key==="number" ) {
10 tmp[grp][key] = num|0;
11 tmp[grp].name = data[prop].value;
12 }
13 else {
14 tmp[grp][key] = data[prop].value;
15 }
16 }
17}
18console.log( JSON.stringify( tmp ) );
19
20var rslt;
21Object.values(tmp).some( item=>item.name==="バナナ"&&(rslt=item) );
22console.log( rslt );
23// => {"number":21,"name":"バナナ","life":5,"five":"2個"}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。