在PHP中,我们有一个名为array_intersect
的方法:
array_intersect()返回一个数组,其中包含所有参数中存在的array1的所有值。请注意,密钥会被保留。
所以它会是这样的:
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
输出:
阵列( [a] =&gt;绿色 [0] =&gt;红色)
正如您所看到的,它会保留键a
和0
。
我知道JavaScript中的数组与PHP不同,但它们与JavaScript中的对象类似。
想象一下,我有这个输入:
let a = ['my', 'life', 'sucks', 'so', 'hard'];
let b = ['life', 'sucks', 'hard'];
我希望这会产生这样的结果:
让r = {1:&#39; life&#39;,2:&#39; sucks&#39; 4:&#39; hard&#39; }
在简历中,键将是找到它的索引(位置)。
我看到了一个用ES6创建的方法,如下所示:
const intersect = (leftArray, rightArray) => leftArray.filter(value => rightArray.indexOf(value) > -1);
但同样,它不会仅仅返回已找到的值的键。
如果可以使用ES6创建,因为我认为语法更清晰。
答案 0 :(得分:3)
您可以使用Object.assign
并映射想要的属性。
var a = ['my', 'life', 'sucks', 'so', 'hard'],
b = ['life', 'sucks', 'hard'],
result = Object.assign(...a.map((v, i) => b.includes(v) && { [i]: v }));
console.log(result);
&#13;
答案 1 :(得分:1)
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `COMMANDSPOOL` WHERE SELECT v.ITEM_ID , v.CODE ,s.SENSOR , d.DESTINATIONCODE FROM V_TABLE v, S_TABLE s ,D_TABLE d WHERE s.ITEM_ID = v.ITEM_ID AND s.CREATIONDATETIME < '2014-2-16 00:00:00' AND v.DESTINATION_ID=d.ID': You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT v.ITEM_ID , v.CODE ,s.SENSOR , d.DESTINATIONCODE FROM V_TABLE' at line 1 (1064 )
&#13;