En mi html tengo una tabla: <table id="table" data-keys="{{keys}}"> donde las keys son una matriz (luego llamo con éxito {% for k in keys %} ).
Pero cuando en mi js llamo: $("#table").data("keys") el resultado es una cadena: "['', 'Value1', 'Value2', 'Value3']" ¿Hay algo inteligente que ¿Puedo hacer para obtener la tabla o simplemente necesito analizar la cadena y convertirla yo mismo?
Debe usar comillas dobles para que la cadena sea JSON válida. Luego será analizado automáticamente por jQuery.
const a = $('#a').data("keys"); const b = $('#b').data("keys"); console.log(typeof a, a) console.log(typeof b, b) <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="a" data-keys='["", "a", "b", "c"]'></div> <div id="b" data-keys="['', 'a', 'b', 'c']"></div>Se hace todo lo posible para convertir el valor de cadena del atributo en un valor de JavaScript (esto incluye valores booleanos, números, objetos, matrices y valores nulos) [...] Cuando una cadena comienza con '{' o '[', jQuery.parseJSON se utiliza para analizarlo; debe seguir una sintaxis JSON válida, incluidos los nombres de propiedad citados. Una cadena que no se puede analizar como un valor de JavaScript no se convierte.