-3
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.
Tôi cần một phương pháp đơn giản để có được khóa của một đối tượng lồng nhau, ví dụ: description
. Đây là cấu trúc của tôi:
let data = [
{
name: "Apple",
id: 1,
alt: [{ name: "fruit1", description: "tbd1" }]
},
{
name: "Banana",
id: 2,
alt: [{ name: "fruit2", description: "tbd2" }]
},
{
name: "Blueberry",
id: 3,
alt: [{ name: "fruit3", description: "tbd3" }]
}
];
Dave Newton
157K24 Huy hiệu vàng254 Huy hiệu bạc 301 Huy hiệu đồng24 gold badges254 silver badges301 bronze badges
Đã hỏi ngày 29 tháng 10 năm 2019 lúc 11:48Oct 29, 2019 at 11:48
4
Bạn có thể sử dụng
const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
0 để liệt kê các khóa cho bất kỳ đối tượng tùy ý nào. Về việc làm tổ, nó chỉ là một trường hợp biết những chỉ số lồng nhau nào bạn muốn liệt kê các trường cho và cung cấp nó.Bạn có thể muốn xem xét một cái gì đó như thế này
Đã trả lời ngày 29 tháng 10 năm 2019 lúc 11:55Oct 29, 2019 at 11:55
HannahannaHanna
494 huy hiệu đồng4 bronze badges
1
Nếu bạn muốn các khóa, bao gồm các phím lồng nhau, bạn có thể đệ quy các mảng/đối tượng như vậy.
Có hai tham số tùy chọn cho phép bạn:
- Bỏ qua phần mảng, tức là
1const isObject = [obj] => obj != null && obj.constructor.name === "Object"; let data = [ { name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] }, { name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] }, { name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] } ]; console.log[getKeys[data, false, false]]; console.log[getKeys[data, true, true]]; function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] { if [Array.isArray[obj]] { if [!skipArrays] scope.push['[' + obj.length + ']']; obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys]; } else if [isObject[obj]] { Object.keys[obj].forEach[[k] => { if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] { let path = scope.concat[k].join['.'].replace[/\.\[/g, '[']; if [!keys.includes[path]] keys.push[path]; } getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]]; }, keys]; } return keys; }
- Có nên giữ các phím đối tượng cha mẹ, tức là
2.const isObject = [obj] => obj != null && obj.constructor.name === "Object"; let data = [ { name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] }, { name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] }, { name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] } ]; console.log[getKeys[data, false, false]]; console.log[getKeys[data, true, true]]; function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] { if [Array.isArray[obj]] { if [!skipArrays] scope.push['[' + obj.length + ']']; obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys]; } else if [isObject[obj]] { Object.keys[obj].forEach[[k] => { if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] { let path = scope.concat[k].join['.'].replace[/\.\[/g, '[']; if [!keys.includes[path]] keys.push[path]; } getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]]; }, keys]; } return keys; }
const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
.as-console-wrapper { top: 0; max-height: 100% !important; }
Đã trả lời ngày 29 tháng 10 năm 2019 lúc 12:33Oct 29, 2019 at 12:33
Ông Polywhirlmr. PolywhirlMr. Polywhirl
36,9K12 Huy hiệu vàng78 Huy hiệu bạc126 Huy hiệu đồng12 gold badges78 silver badges126 bronze badges
Để có được các phím của một đối tượng lồng nhau:
const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
3 => Kết quả trong mảng chuỗi ["name", "mô tả"] - không cần thiết theo thứ tự này.Để nhận giá trị của khóa mô tả:
const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
4 => Kết quả trong chuỗi const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
5.Để có được một mảng tất cả các mô tả:
const isObject = [obj] => obj != null && obj.constructor.name === "Object";
let data = [
{ name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] },
{ name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] },
{ name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] }
];
console.log[getKeys[data, false, false]];
console.log[getKeys[data, true, true]];
function getKeys[obj, keepObjKeys, skipArrays, keys=[], scope=[]] {
if [Array.isArray[obj]] {
if [!skipArrays] scope.push['[' + obj.length + ']'];
obj.forEach[[o] => getKeys[o, keepObjKeys, skipArrays, keys, scope], keys];
} else if [isObject[obj]] {
Object.keys[obj].forEach[[k] => {
if [[!Array.isArray[obj[k]] && !isObject[obj[k]]] || keepObjKeys] {
let path = scope.concat[k].join['.'].replace[/\.\[/g, '['];
if [!keys.includes[path]] keys.push[path];
}
getKeys[obj[k], keepObjKeys, skipArrays, keys, scope.concat[k]];
}, keys];
}
return keys;
}
6.Không biết ý của bạn, vì vậy đã cho bạn tất cả các tùy chọn mà tôi có thể nghĩ ra.
Đã trả lời ngày 29 tháng 10 năm 2019 lúc 12:25Oct 29, 2019 at 12:25
GiborgiborGibor
1.6675 huy hiệu bạc20 Huy hiệu đồng5 silver badges20 bronze badges
Tôi có thể giúp gì cho bạn
let keys = Object.keys[yourObject];
Mảng khóa chứa tên, mô tả
Đã trả lời ngày 29 tháng 10 năm 2019 lúc 13:20Oct 29, 2019 at 13:20
JavaScript cho phép bạn lưu trữ dữ liệu dưới dạng các cặp giá trị khóa được gọi là đối tượng JS. Cấu trúc của chúng tương tự như JSON và thậm chí hỗ trợ làm tổ, nghĩa là sử dụng một đối tượng trong một đối tượng khác. Đôi khi bạn có thể cần nhận các khóa từ các đối tượng trong JavaScript. Trong bài viết này, chúng tôi sẽ học cách lấy các phím đối tượng lồng nhau trong JavaScript.
Hãy để chúng tôi nói rằng bạn có đối tượng lồng nhau sau trong JavaScript.
let data = [ { name: "Apple", id: 1, alt: [{ name: "fruit1", description: "tbd1" }] }, { name: "Banana", id: 2, alt: [{ name: "fruit2", description: "tbd2" }] }, { name: "Blueberry", id: 3, alt: [{ name: "fruit3", description: "tbd3" }] } ];
Mỗi đối tượng JS đều hỗ trợ hàm SEPS [] trả về một mảng các phím có mặt ở cấp độ đầu tiên của đối tượng. Đây là cú pháp của nó.
let keys = Object.keys[yourObject];
Bạn có thể truy cập đối tượng lồng nhau bằng cách sử dụng các chỉ mục 0, 1, 2, v.v. Vì vậy, dữ liệu [0] .alt [0] sẽ truy cập vào đối tượng lồng vào đầu tiên. Bây giờ bạn có thể gọi hàm các khóa [] đã đề cập ở trên để có được danh sách các khóa của nó.
Object.keys[data[0].alt[0]]
Lệnh trên sẽ trả về [‘Tên,‘ Mô tả] không nhất thiết theo cùng một thứ tự.
Nếu bạn muốn nhận giá trị của một khóa cụ thể, bạn có thể trực tiếp tham khảo nó bằng tên khóa của nó. Dưới đây là lệnh để nhận được giá trị mô tả của đối tượng lồng nhau đầu tiên.
data[0].alt[0].description
Nếu bạn muốn nhận được một mảng giá trị mô tả của tất cả các đối tượng lồng nhau, hãy sử dụng cú pháp sau.
data.map[obj => obj.alt[0].description]
Trong bài viết này, chúng tôi đã học được cách lấy các phím đối tượng lồng nhau trong JavaScript.
Cũng đọc:
Cách đọc các đối số dòng lệnh trong nodejshow để thay đổi tên lớp phần tử trong vòng JavaScriptJavaScript thành 2 dấu vị trí thập phân để vô hiệu hóa nhấp chuột phải vào trang web bằng cách sử dụng Javascripthow để tắt/bật đầu vào trong jQuery
How to Change
Element’s Class Name in JavaScript
JavaScript Round to 2 Decimal Places
How to Disable Right Click on Web Page Using JavaScript
How to Disable/Enable Input in jQuery