如何从数组对象设置全局变量以在外部访问它们?

时间:2017-08-03 12:36:19

标签: javascript jquery arrays

dataobject。它包含一个parse属性,它本身是一个object,包含一个langLinks属性,它是一个对象数组。

data.parse.langlinks.map(function(val){ 
   return val['*'];
});

没关系,但我需要能够在外面阅读each return val['*'];,因为这是在

中读取的
$.each(data, function(i, item) {
   data.parse.langlinks.map(function(val){ 
     return val['*'];
  });
  checkLocation(); 

所以,当我运行以下内容时,将无效。

function checkLocation() {
 spacetime[counter].Article.Language.langPrefix.push(val['*']); 

在此尝试push

            spacetime.push({
                Article : {
                    Title : [],
                    Space : [],
                    Time: {
                        days : [],
                        months : [],
                        years : [],
                        suffixes : []
                    },
                    Language : {
                        TitleLang: [],
                        articleLangId : [],
                        langPrefix : [],
                        langName : [],
                        langLink : []
                    }
                }
            });

数组在控制台中显示输出:

console.log(data.parse.langlinks.map(function(val){ return val["*"] }));
Array(6)
  "Batalla de Tabarsi"
  "Battle of Fort Tabarsi"
  "Batalo de Tabarsi"
  "Batalla del Fuerte de Tabarsí"
  "جنگ قلعه طبرسی"
 "Bataille de Shaykh Tabarsi"

2 个答案:

答案 0 :(得分:0)

我不太确定这个问题,但是:

window.someVariableName = []
var langLinks = _.get(data, 'parse.langLinks');
langLinks.forEach(function(langLink){
  window.someVariableName.push(langLink) 
})

假设您要通过迭代window.someVariableName来设置全局data.parse.langLinks

此外:

  • parse是一个属性的坏名称 - 它是一个动词,所以它听起来像一个函数或方法。

  • JS使用camelCase作为stdlib和大多数第三方代码。 TitleCase仅用于构造函数。

答案 1 :(得分:0)

map方法的使用方式错误,因为数据本身会发生变化,并且不会使用return存储任何全局值。

$.each(data, function(i, item) {
    var value = item.parse.langlinks.map(function(val){ 
        return val['*'];
    });

    checkLocation(value, i); 
});

function checkLocation(value, counter) {
    spacetime[counter].Article.Language.langPrefix.push(value); 
}