这是我的代码没有按预期工作,我不希望它将相同的数组推入此数组
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 ' } ]
答案 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