2015-06-11 5 views
-1

Пожалуйста, посмотрите ниже код javascript, когда я запустил его, он дал неопределенные значения, может я знаю, что я делаю неправильно здесь?путаница с типом данных объекта в javascript

var fruit ={ 

      name:"mango", 
      color:"yellow", 
      nativeTo:["india","china"], 
      showName:function(){ 
       return this.color + " " + this.name 
      }, 
      foundIn: function(){ 
       this.nativeTo.forEach(function(country){ 
        return ("found in "+ country) 
       }) 
      }  
    }  
     alert (fruit.foundIn()); 
+0

Вы делаете возвращение в сферу Foreach: P – Exos

+0

Какой выход вы ожидаете? 'foundIn' ничего не возвращает, поэтому возвращает' undefined'. –

ответ

2

Изменено foundIn к этому:

foundIn: function() { 
    return this.nativeTo.map(function(country) { 
     return "found in "+ country;               
    }) 
    } 

Это предупредит с:

found in india,found in china

Обратите внимание на использование map вместо forEach - вы можете использовать forEach для итерации, но то вам нужна переменная за пределами итерации forEach что вы хотите вернуть (строка), а затем вам нужно вернуть эту строку накопления.

JSFiddle: http://jsfiddle.net/a2s3hh39/

+0

ОК я сделал это так ' foundIn: function() { \t var tt = []; это.нативныйТолько для каждого (функция (страна) { tt.push ("найдено в" + стране); }) return tt; } ' все еще это не помощь, я создал массив и нажал значения в это. – Nomad

+0

@Nomad Hrm ... Я попробовал это здесь с http://jsfiddle.net/a2s3hh39/1/ и, похоже, работает. – Cymen

+0

спасибо, что помогло, некоторые опечатки. – Nomad

Смежные вопросы