回答:
あなたはほとんど正しいですが、いくつかの引用符を間違って配置しました。全体を通常の引用符で囲むと、文字列として文字列が得られます#demo + {this.state.id}
。変数と文字列リテラルのどちらであるかを示す必要があります。内部{}
はすべてインラインJSX 式なので、次のことができます。
href={"#demo" + this.state.id}
これは文字列リテラルを使用し、#demo
それをの値に連結しますthis.state.id
。これは、すべての文字列に適用できます。このことを考慮:
var text = "world";
この:
{"Hello " + text + " Andrew"}
これにより、次の結果が得られます。
Hello world Andrew
ES6文字列補間/ テンプレートリテラルを `(バッククォート)と${expr}
(補間式)で使用することもできます。
href={`#demo${this.state.id}`}
これは基本的にの値を置き換えてthis.state.id
連結し#demo
ます。これは、次を実行することと同じです"#demo" + this.state.id
。
exampleData =
const json1 = [
{id: 1, test: 1},
{id: 2, test: 2},
{id: 3, test: 3},
{id: 4, test: 4},
{id: 5, test: 5}
];
const json2 = [
{id: 3, test: 6},
{id: 4, test: 7},
{id: 5, test: 8},
{id: 6, test: 9},
{id: 7, test: 10}
];
example1 =
const finalData1 = json1.concat(json2).reduce(function (index, obj) {
index[obj.id] = Object.assign({}, obj, index[obj.id]);
return index;
}, []).filter(function (res, obj) {
return obj;
});
example2 =
let hashData = new Map();
json1.concat(json2).forEach(function (obj) {
hashData.set(obj.id, Object.assign(hashData.get(obj.id) || {}, obj))
});
const finalData2 = Array.from(hashData.values());
2番目の例をお勧めします。