3つのオブジェクトを含むオブジェクトを作成します。そのうちの1つには3つのオブジェクトが含まれ、それぞれに値を設定してもらいたいと思います。
そして、分割するオブジェクトの種類がわからないのですが、すべてオブジェクトのようです。
私はこのようにしようとしました。最初にトラバースしてオブジェクトと配列を認識し、次に2回トラバースし、出発時に3回トラバースしましたが、コンソールにエラーが表示されます。
元のスクリプトは、オブジェクトをネストする4つのレベルを除外しています。ブラウザ検索ツール
Object.keys(iconsData).forEach(function(value1) {
if(iconsData[value1].constructor === Array){
iconsData[value1].forEach(function (value2) {
console.log('typeArray--'+iconsData[value1].constructor)
value2.host.forEach(function(host) {
iconsData.hostCustomMap[host] = value2.custom // The console shows an Error maybe here
})
})
} else if (iconsData[value1].constructor === Object) {
Object.keys(iconsData[value1]).forEach(function (value2) {
console.log('typeObject--'+iconsData[value1].constructor)
iconsData[value1][value2].forEach(function (value3) {
value3.host.forEach(function(host){
iconsData.hostCustomMap[host] = value3.custom
});
});
});
}
})
次のコードには、ネストオブジェクトが含まれています。
(function () {
'use strict';
var keyword = {
beforePopup: function (popup) {
var text = window.getSelection().toString().trim();
GM_setValue('search', text);
popup(text);
},
beforeCustom: function (custom) {
var text = GM_getValue('search');
GM_setValue('search', '');
custom(text);
},
};
var iconsData = {
iconArraya: {
Arraya: [
{
name: 'Google',
image:'https://i.ibb.co/R9HMTyR/1-5.png',
host: ['www.google.com'],
popup: function (text) {
open('https://search.google.com/live?keyword=' + encodeURIComponent(text));
}
}
],
Arrayb: [
{
name: 'Bing',
image: 'https://i.ibb.co/pwkLTFc/1.png',
host: ['www.bing.com'],
popup: function (text) {
open('https://www.bing.com/live?keyword=' + encodeURIComponent(text)');
}
}
],
Arrayc: [
{
name: 'Youtube',
image:'https://i.ibb.co/FWVJ3Kf/1-2.png',
host: ['www.youtube.com'],
popup: function (text) {
open('https://www.youtube.com/live?keyword=' + encodeURIComponent(text)');
}
}
]
},
iconArrayb: [
{
name: 'open',
image:'https://i.ibb.co/fxpm6Wc/image.png',
host: [''],
popup: function (text) {
open(encodeURIComponent(text));
}
}
],
iconArrayc: [
{
name: 'copy',
image:'https://i.ibb.co/PQ5xM2R/2-1.png',
host: [''],
popup: function (text) {
document.execCommand('copy', false, null))
}
}
],
hostCustomMap: {}
}
未定義のプロパティ「www.google.com」を設定できませんTypeError:未定義のプロパティ「www.google.com」を設定できません
hostCustomMapはiconsDataのプロパティではないため、エラーがスローされます。
コードでは、最後にhostCustomMapという名前の変数を設定します。これは、オブジェクトiconsDataのプロパティである必要があります。元のスクリプトのように。
このような:
var iconsData = {
iconArraya: ...,
iconArrayb: ...,
iconArrayc: ...,
iconArrayD: ...,
hostCustomMap: {}
}
これではない:
var iconsData = {
iconArraya: ...,
iconArrayb: ...,
iconArrayc: ...,
iconArrayD: ...
}
var hostCustomMap = {}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加