2017-08-03 39 views
0

dataobject。它包含一个parse属性,该属性本身是一个object,包含langLinks属性,该属性是一个对象数组。如何从数组对象中设置全局变量以在外部访问它们?

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

这很好,但我需要能够读取eachreturn 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" 
+0

我不确定'每个返回val ['*'];'的意思。你是否想要获得所有的langLinks? – mikemaccana

+0

@mikemaccana刚刚更新的问题,基本上每个这些成果必须从外部访问,但他们的'item'本身已是一个'array' –

+0

你为什么与'$ each'循环当你正在做一个'性质映射'在同一个变量'data'上。 – Priya

回答

0

我不太清楚的问题,而是:

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

假设你想设置全球window.someVariableName通过遍历data.parse.langLinks

另外:

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

  • JS使用驼峰的STDLIB和大多数第三方代码。 TitleCase仅用于构造函数。

+0

给'未捕获的ReferenceError:_不defined' –

+0

好的作品,必须将其更改为'无功langLinks = data.parse.langlinks.map(函数(VAL){返回VAL [ “*”] });; \t \t \t \t langLinks.forEach(函数(langLink){ \t \t \t \t \t someVariableName.push(langLink); \t \t \t \t})' –

+0

_是lodash或下划线,最常见的JS库。 – mikemaccana

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); 
} 
+1

我不确定'val ['*']'&'counter'在哪里,它们是如何工作的。 – Priya

+0

挂在这看起来很有希望 –

+0

如果你想推动整个'langlinks'数据,那么你可能需要添加LHS分配并将其推送到'checkLocation'方法。 – Priya