JS推送数组到数组不工作

时间:2017-05-27 09:16:06

标签: javascript

这是我的代码没有按预期工作,我不希望它将相同的数组推入此数组

var fruits = [];
var news={from,theword};

if (fruits.indexOf(news) <0){ // or .includes(news)

    fruits.push(news);}.

输出

[ { from: 'rubuno@.me',
    theword: 'birakma beni derken birakilirmi bu kadin ' },
  { from: 'rubuno@.me',
    theword: 'birakma beni derken birakilirmi bu kadin ' } ]

2 个答案:

答案 0 :(得分:0)

这是因为第2行{from,theword}和第6行{from,theword}看起来相同,但它们实际上是不同的对象。

例如,{} === {}会返回false。只有基元(字符串,数字,布尔值......)在看起来相同时才相等:'a' === 'a'返回true

因此,如果您在第6行将{from,theword}更改为news,它将指向同一个对象,您的代码将起作用(数组中只有一个对象)。

另外,{from,theword}表示法在javascript中很新。你确定要这个吗?它与说{from: from, theword: theword}相同。

答案 1 :(得分:0)

尝试使用Array#find方法。不要忘记在!条件开头添加if

<强>更新

var fruits = [{from: 'rubuno@ .me', theword: 'gelmis gecmis en guzel kadin sesi yuregine saglik funda'}, {  from: 'rubuno@ .me',  theword: 'gelmis gecmis en guzel kadin sesi yuregine saglik funda'}]
var news = { from: 'rubuno@ .me', theword: 'gelmis gecmis en guzel kadin sesi yuregine saglik funda'}

 if (!fruits.find(a => a.from == news.from && a.theword == news.theword)) { //check is present r not
      fruits.push(news); //then push is not inside the array
    }
    console.log(fruits) //is passing one time only