>

이 질문에 부딪 쳤습니다. ( [{id: 1},{id: 2},...] 와 같은 배열을 초기화하는 방법 ).

허용되는 답변 :

let sampleData = Array.from({length: 10}, (_, i) => ({id:i}))
console.log(sampleData)

그리고 다른 많은 것들도 있습니다.
그러나 솔루션으로 템플릿 리터럴 을 생각했습니다. , 그러나 작동 방식을 알 수 없습니다.

지금까지 가지고있는 것은 :

var i = 0;
var arr = `[${"{id:++i},".repeat(10)}]`
console.log("As a string",arr);
console.log("Evaluated",eval(arr));

그러나 pyzwyz를 사용합니다.  내가 틀렸다는 것을 안다.

도 시도했습니다

eval

그러나 나는이 문자열에 대한 백틱을 어떻게 든 아직 호출하지 않았습니다 ( var i = 0; var arr = `[${"{id:${++i}},".repeat(10)}]` console.log(arr); 와 같은 것)   TemplateLiteralFunction.call 에서 )를 사용하여 해당 표현식을 구문 분석하십시오.
그리고 태그 함수를 작성하는 대신 arr 라는 함수를 작성합니다. .

그래서 initArray(ofLength) 없이 템플릿 리터럴을 사용할 수 있습니까?  또는 태그 함수를 사용하여 값으로 채워진 주어진 길이의 배열을 달성합니까? 템플릿 리터럴을 어떻게 든 중첩합니까?

eval
  • 답변 # 1

    함수 생성자를 사용할 수 있습니다

    와이즈 비즈

    The Function constructor creates a new Function object. Calling the constructor directly can create functions dynamically, but suffers from security and similar (but far less significant) performance issues similar to eval. However, unlike eval, the Function constructor allows executing code in the global scope, prompting better programming habits and allowing for more efficient code minification.

    var template = `[${"{\"id\":${++i}},".repeat(10)}]` template = template.replace(/,]$/,']'); //replace last comma var parser = new Function("{i}", "return `" + template + "`;"); var arr = parser({i:0}); console.log(JSON.parse(arr));

관련 자료

  • 이전 python 3.x - aiohttp를 사용하여 쿠키 가져 오기
  • 다음 활동이 작동하지 않는 Android의 OnOptionsItemSelected