0

我遍历一个数组并根据条件向对象添加不同的值。

第一个 console.log() 输出值。第二个不输出任何东西。为什么?我能做些什么呢?期望的结果是,如果任何关键字在 nicecontact.fulladress 中,则应使用该关键字拆分和添加字符串。如果没有任何值,我想要 fulladress=adress

var niceContact= {}
niceContact.fulladress = $.trim(contact[2])
    //cut out lgh if it's in there.
    var keywords = ["Lgh", "lgh"]
    niceContact.adress = keywords.some(function(keyword){
        if (niceContact.fulladress.indexOf(keyword) != -1){
            adressarray = niceContact.fulladress.split(keyword)
            niceContact.adress = adressarray[0]
            console.log(niceContact.adress)

            return adress;
        }else{
            console.log('false')
            niceContact.adress = niceContact.fulladress
        }
    })
    console.log(niceContact.adress)
4

1 回答 1

1

那不是Array.some为了什么。不应该从中返回一个值:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some

some 对数组中存在的每个元素执行一次回调函数,直到找到一个回调函数返回真值。如果找到这样的元素, some 立即返回 true。否则,有些返回 false。回调仅针对已分配值的数组索引调用;对于已被删除或从未被赋值的索引,它不会被调用。

var niceContact= {}
var hadHit = false
niceContact.fulladress = $.trim(contact[2])
    //cut out lgh if it's in there.
    var keywords = ["Lgh", "lgh"]
    niceContact.adress = niceContact.fulladress
    keywords.forEach(function(keyword){
        if (!hadHit && niceContact.adress.indexOf(keyword) != -1){
             // do your checking for the keywords here
             // and modify niceContact.adress if needed

             // if you're looking to `break` out of the .forEach
             // you can `return false;` instead (same as break) see http://stackoverflow.com/questions/6260756/how-to-stop-javascript-foreach

             // or if you have a hit, just do `hadHit = true` after mod-ing the address

        }
    })
    console.log(niceContact.adress)
于 2013-08-07T18:40:58.930 回答