답변:
당신은 거의 정확하며 몇 가지 따옴표를 잘못 배치했습니다. 모든 것을 정규 따옴표로 묶으면 문자 그대로 문자열 #demo + {this.state.id}
이 표시됩니다. 변수와 문자열 리터럴을 표시해야합니다. 내부의 {}
것은 인라인 JSX 표현식 이므로 다음을 수행 할 수 있습니다.
href={"#demo" + this.state.id}
문자열 리터럴을 사용 #demo
하여 값으로 연결합니다 this.state.id
. 그런 다음 모든 문자열에 적용 할 수 있습니다. 이걸 고려하세요:
var text = "world";
이:
{"Hello " + text + " Andrew"}
결과는 다음과 같습니다.
Hello world Andrew
또한 `(backticks)와 (interpolated expression) 과 함께 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}
];
예 1 =
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;
});
예 2 =
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());
두 번째 예를 권장합니다. 빠릅니다.