假设我有2个包含对象的数组:
var aArray = [ { title: 'Abc', price: '1,200' }, { title: 'def', price: '900' } ]
var bArray = [ { title: 'def', price: '900', other: 'someDetail' }, { title: 'Abc', price: '1,200', other: 'someDetail' } ]
我如何验证每个数组中的标题值是否相同,即使它们的顺序不同?
我可以使用类似的东西:
expect(aArray.title).to.deep.equal(bArray.title)
然后对于那个匹配的标题项,我想检查两者之间的价格是否相同。
我也试过了
expect(cart).to.deep.include.members(cart2).but.not.own.deep.include.property('someDetail');
答案 0 :(得分:1)
我认为你可以从这两个阵列获得所有头衔。
并使用eql来比较它们。
title
如果您想检查price
和var aArray = [ { title: 'Abc', price: '1,200' }, { title: 'def', price: '900' } ]
var bArray = [ { title: 'def', price: '900', other: 'someDetail' }, { title: 'Abc', price: '1,200', other: 'someDetail' } ]
var aTitle = aArray.map(item => `${item.title}|${item.price}`); // ['Abc|1,200', 'def|900']
var bTitle = bArray.map(item => `${item.title}|${item.price}`);
expect(aTitle).eql(bTitle);
是否匹配,目前我认为一种方法会更容易。
您可以将标题和价格作为字符串连接起来并进行比较。
ListFooterComponent={<Footer {...this.props}/>}
答案 1 :(得分:1)
我猜有多种方法可以做到这一点。这种方式只需要您将bArray
映射到只有您需要的键的对象,即title
和price
。
然后您可以使用members
和deep
。如您所见,不需要相同的数组成员顺序,但需要相同的键。
const aArray = [ { title: 'Abc', price: '1,200' }, { title: 'def', price: '900' } ]
const bArray = [ { title: 'def', price: '900', other: 'someDetail' }, { title: 'Abc', price: '1,200', other: 'someDetail' } ]
const newBArray = bArray.map(({ title, price }) => ({ title, price }))
try {
chai.expect(newBArray).to.have.deep.members(aArray)
} catch (e) {
console.log("Error!", e)
} finally {
console.log("Done with execution.")
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/4.1.2/chai.min.js"></script>
&#13;
我已经使用了try / catch / finally来使代码提供有关正在发生的事情的有效提示。
答案 2 :(得分:0)
您可以在数组上使用var jdates =[];
var jvalues =[];
datat.Datase.forEach(function (kv) {
kv.Data.forEach(function (d) {
if (!(d.Date instanceof Date)){
jdates.push(d.Date = parseDate(d.Date));
jvalues.push(d.Value = parseInt(d.Value));
} else {
jdates.push(d.Date);
jvalues.push(d.Value);
}
});
});
方法。
find()方法返回数组中第一个元素的值 满足提供的测试功能。否则未定义 返回。
find()
答案 3 :(得分:0)
您使用这种方式验证。
server {
listen 80;
listen [::]:80;
root /var/www/campaignmanager/bannerad/public;
index index.php index.html index.htm;
server_name exmaple.com www.example.com;
location / {
try_files $uri $uri/index.html $uri.html @upstream;
}
location @upstream {
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}