Hướng dẫn convert string to property javascript - chuyển đổi chuỗi thành thuộc tính javascript

28

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Có thể trùng lặp: Cách chuyển đổi chuỗi thành tên trường của đối tượng trong JavaScript
How to convert string as object's field name in javascript

Tôi có thể làm điều này:

var objPosition = {};
objPosition.title = "whatever";

Nhưng tôi đang nhận được 'tiêu đề' một cách linh hoạt và muốn sử dụng khoảng một nửa tá chuỗi để thu được để gán một nửa tá thuộc tính cho đối tượng. Tôi đã thử Eval và một số chương trình khác dường như có cùng một vấn đề, nhưng đã trở nên trống rỗng cho đến nay.

Tôi có:

var txtCol = $(this).text();
txtCol = $.trim(txtCol);

Và tôi muốn giá trị của txtcol là một tên thuộc tính.

Bất kỳ ý tưởng?

Hướng dẫn convert string to property javascript - chuyển đổi chuỗi thành thuộc tính javascript

Hỏi ngày 28 tháng 8 năm 2012 lúc 17:51Aug 28, 2012 at 17:51

Michael Broschatmichael BroschatMichael Broschat

8553 Huy hiệu vàng10 Huy hiệu bạc17 Huy hiệu đồng3 gold badges10 silver badges17 bronze badges

0

Sử dụng ['propname']:

objPosition[txtCol] = "whatever";

Bản demo: http://jsfiddle.net/hr7xw/

Đã trả lời ngày 28 tháng 8 năm 2012 lúc 17:53Aug 28, 2012 at 17:53

MELLAMOKBMELLAMOKBmellamokb

55.5K12 Huy hiệu vàng106 Huy hiệu bạc135 Huy hiệu Đồng12 gold badges106 silver badges135 bronze badges

0

Sử dụng ký hiệu khung: objPosition['title'] = "whatever";

so:

var objPosition = {}, ttl = 'title';
objPosition[ttl] = 'whatever'; 

[Chỉnh sửa 11/2019: ES20XX]

let objPosition = {};
const ttl = 'title';
// [...]
objPosition = {...objPosition, [ttl]: "whatever"};
console.log(objPosition);

Đã trả lời ngày 28 tháng 8 năm 2012 lúc 17:53Aug 28, 2012 at 17:53

MELLAMOKBMELLAMOKB

var property = "title"
objPosition[property] = "something";

Đã trả lời ngày 28 tháng 8 năm 2012 lúc 17:53Aug 28, 2012 at 17:53

MELLAMOKBMELLAMOKBShreedhar

55.5K12 Huy hiệu vàng106 Huy hiệu bạc135 Huy hiệu Đồng3 gold badges20 silver badges27 bronze badges

Sử dụng ký hiệu khung: objPosition['title'] = "whatever";

objPosition["title"] = "Whatever";

[Chỉnh sửa 11/2019: ES20XX]Aug 28, 2012 at 17:54

Hướng dẫn convert string to property javascript - chuyển đổi chuỗi thành thuộc tính javascript

Bạn cũng có thể đặt khóa của đối tượng như thế nàySome Guy

Shreedharshreedhar10 gold badges56 silver badges67 bronze badges

Dưới đây là 4 cách để chia một từ thành một mảng các ký tự. "Chia" là cách phổ biến nhất và mạnh mẽ hơn. Nhưng với việc bổ sung ES6, có nhiều công cụ hơn trong Arsenal JS để chơi với 🧰

Tôi luôn muốn xem tất cả các cách có thể để giải quyết một cái gì đó bởi vì sau đó bạn có thể chọn cách tốt nhất cho trường hợp sử dụng của bạn. Ngoài ra, khi bạn thấy nó bật lên trong cơ sở mã của ai đó, bạn sẽ hiểu nó một cách dễ dàng

# Kịch bản

Thay vì trải qua những ưu và nhược điểm của từng cách khác nhau. Hãy để tôi chỉ cho bạn các kịch bản khác nhau, nơi một người được ưa thích hơn cái kia.

# Mảng ký tự

Nếu tất cả những gì bạn đang làm là muốn tách chuỗi theo từng ký tự chuỗi, tất cả các cách đều tốt và sẽ cho bạn cùng một kết quả

# Phân tách cụ thể

Nếu bạn muốn chia chuỗi của mình bằng một ký tự cụ thể, thì split là cách để đi.

Các cách khác chỉ bị giới hạn bởi từng ký tự chuỗi

# Chuỗi chứa biểu tượng cảm xúc

Nếu chuỗi của bạn chứa biểu tượng cảm xúc, thì split hoặc

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1 có thể không phải là lựa chọn tốt nhất. Hãy xem những gì xảy ra:

Tuy nhiên, nếu chúng ta sử dụng các cách khác, nó hoạt động:

Điều này là do split phân tách các ký tự bằng các đơn vị mã UTF-16 có vấn đề vì các ký tự Emoji là UTF-8. Nếu chúng ta nhìn vào biểu tượng cảm xúc yum của chúng ta

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
3, nó thực sự được tạo thành từ 2 ký tự không phải là 1 như chúng ta nhận thức.

Đây là cái được gọi là cụm grapheme - nơi người dùng coi đó là 1 đơn vị, nhưng dưới mui xe, thực tế nó được tạo thành từ nhiều đơn vị. Các phương thức mới hơn

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
4 và
var txtCol = $(this).text();
txtCol = $.trim(txtCol);
5 được trang bị tốt hơn để xử lý chúng và sẽ phân chia chuỗi của bạn bằng các cụm đồ họa 👍grapheme clusters 👍

# Một cảnh báo về var txtCol = $(this).text(); txtCol = $.trim(txtCol); 1 ⚠

Một điều cần lưu ý

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1 là nó không thực sự tạo ra một mảng thuần túy. Hãy bắt đầu với định nghĩa của nó

Phương thức Object.Assign () sao chép tất cả các thuộc tính riêng biệt từ một hoặc nhiều đối tượng nguồn sang đối tượng đích

Chìa khóa có "bản sao tất cả các thuộc tính riêng biệt". Vì vậy, những gì chúng tôi đang làm ở đây

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
8 Nó sao chép tất cả các thuộc tính chuỗi của chúng tôi vào mảng mới của chúng tôi. Có nghĩa là chúng tôi có một mảng cộng với một số phương thức chuỗi.

# TypeScript Kiểm tra: mảng kết quả không phải là loại
var txtCol = $(this).text();
txtCol = $.trim(txtCol);
9 😱

Điều này là rõ ràng hơn nếu chúng ta sử dụng Sân chơi TypeScript. Vui lòng sao chép mã và dán vào sân chơi, nơi bạn có thể di chuột vào biến để xem các loại. Vì đây chỉ là một bài viết, tôi sẽ dán kết quả ở đây để bạn có thể làm theo.

Tuy nhiên, nếu chúng ta nhìn vào loại kết quả của

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1. Nó không cho chúng ta một loạt các chuỗi.

# TypeScript Kiểm tra: Mảng kết quả có thể truy cập các thuộc tính chuỗi 😱

Chúng tôi có thể kiểm tra thêm điều này bằng cách truy cập một thuộc tính chỉ có sẵn cho

objPosition[txtCol] = "whatever";
1.

Vì vậy, điều đó có nghĩa là nếu tôi gọi

objPosition[txtCol] = "whatever";
2 trên mảng của chúng tôi, nó sẽ cho chúng tôi biết tài sản này không tồn tại. Đây là những gì chúng ta mong đợi để thấy:

Nhưng, nếu chúng ta gọi

objPosition[txtCol] = "whatever";
2 trên mảng được cho là của chúng tôi được tạo bởi
var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1, nó hoạt động 😱

Và điều này là do

var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1 bản sao trên tất cả các thuộc tính từ chuỗi gốc. Đây là cách tôi giải thích nó bằng các điều khoản không phải là DEV. Bạn đến một cửa hàng để mua một con chó. Nhưng sau đó lưu trữ
var txtCol = $(this).text();
txtCol = $.trim(txtCol);
1 bán cho bạn một con chó có cánh rồng. Điều này nghe có vẻ siêu tuyệt vời, nhưng đây không thực sự là một con vật cưng thân thiện cho thuê. Hmm ... Tôi không nghĩ đây là ví dụ tốt nhất của tôi. Nhưng tôi nghĩ bạn nhận được quan điểm của tôi 😂

# Chuyển đổi có vẻ ổn trong trình duyệt 🙂

Bây giờ tôi không nghĩ rằng đây là một công cụ phá vỡ giao dịch lớn, vì:

Có vẻ như các trình duyệt có một số loại cơ chế để "an toàn" do object.assign ([], "chuỗi") và tránh thêm các phương thức của chuỗi đó vào mảng.

Cảm ơn bạn @lukeshiru: vì đã chia sẻ kiến ​​thức này cho tôi 👏 Anh ấy cũng đã tạo mã sân chơi TypeScript để bạn có thể xem> Liên kết

@CaptainArion_: Biến chuỗi thành mảng char nhưng sử dụng hàm bản đồ 🤣

@Hiumesh2:

objPosition[txtCol] = "whatever";
7 wil cũng thực hiện thủ thuật

@Inside.Code: Thông tin bổ sung: an toàn hơn khi sử dụng toán tử lan rộng (phương pháp thứ hai) thay vì

objPosition[txtCol] = "whatever";
8 (phương pháp đầu tiên), vì
objPosition[txtCol] = "whatever";
9 không hoạt động với một số ký tự không phổ biến.

@faerberrr: Tôi có một chuỗi chứa các ký tự đặc biệt như

var objPosition = {}, ttl = 'title';
objPosition[ttl] = 'whatever'; 
0, v.v. Khi tôi chia chúng bằng phương pháp
var objPosition = {}, ttl = 'title';
objPosition[ttl] = 'whatever'; 
1 và chạy
var objPosition = {}, ttl = 'title';
objPosition[ttl] = 'whatever'; 
2, nó đã trả lại hai lần giá trị dự kiến! Chuyển sang toán tử lây lan đã khắc phục sự cố.

# Tài nguyên

  • MDN Web Docs: Split
  • MDN Web Docs: Truyền bá
  • MDN Web Docs: Array.from
  • MDN Web Docs: Object.Assign
  • Stack Overflow: Làm cách nào để phân chia một chuỗi, phá vỡ một ký tự cụ thể?
  • Stack Overflow: Làm thế nào để bạn có được một chuỗi vào một mảng ký tự trong JavaScript?
  • Stack Overflow: Làm cách nào để chia một chuỗi thành một mảng các ký tự?
  • Stack Overflow: Chuyển đổi UTF-8 thành Unicode để tìm Emoji trong chuỗi trong Java

Chúng ta có thể chuyển đổi một chuỗi thành đối tượng trong JavaScript không?

Sử dụng hàm javascript json.parse () để chuyển đổi văn bản thành đối tượng javascript: const obj = json.parse ('{"name": "john", "tuổi": 30, "thành phố": "new york"}' ); Hãy chắc chắn rằng văn bản ở định dạng JSON, nếu không bạn sẽ gặp lỗi cú pháp.: const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}'); Make sure the text is in JSON format, or else you will get a syntax error.

Làm thế nào để bạn biến một chuỗi thành một đối tượng?

Chúng ta có thể chuyển đổi chuỗi thành đối tượng trong Java với toán tử gán.Mỗi lớp là nội bộ là một lớp trẻ của lớp đối tượng.Để bạn có thể gán chuỗi trực tiếp cho đối tượng.Bạn cũng có thể chuyển đổi chuỗi thành đối tượng loại bằng lớp bằng lớp.with assignment operator. Each class is internally a child class of Object class. So you can assign string to Object directly. You can also convert String to Class type object using Class.

Làm cách nào để chuyển đổi một chuỗi thành một đối tượng trong Java?

Chúng ta cũng có thể chuyển đổi chuỗi thành một đối tượng bằng phương thức class.forname ().Tham số: Phương thức này chấp nhận tên lớp tham số là lớp mà thể hiện của nó được yêu cầu.Giá trị trả về: Phương thức này trả về thể hiện của lớp này với tên lớp được chỉ định.using the Class. forName() method. Parameter: This method accepts the parameter className which is the Class for which its instance is required. Return Value: This method returns the instance of this Class with the specified class name.

Làm cách nào để biến một chuỗi thành một mảng?

Trong Java, có bốn cách để chuyển đổi một chuỗi thành một mảng chuỗi:..
Sử dụng chuỗi.Chia () Phương thức ..
Sử dụng mẫu.Chia () Phương thức ..
Sử dụng chuỗi [] tiếp cận ..
Sử dụng phương thức toarray () ..